use crate::{
    core_arch::{simd::*, simd_llvm::*, x86::*, x86_64::*},
    mem::transmute,
};

#[cfg(test)]
use stdarch_test::assert_instr;

/// Convert the lower double-precision (64-bit) floating-point element in a to a 64-bit integer, and store the result in dst.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtsd_i64&expand=1792)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsd2si))]
pub unsafe fn _mm_cvtsd_i64(a: __m128d) -> i64 {
    _mm_cvtsd_si64(a)
}

/// Convert the lower single-precision (32-bit) floating-point element in a to a 64-bit integer, and store the result in dst.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtss_i64&expand=1894)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtss2si))]
pub unsafe fn _mm_cvtss_i64(a: __m128) -> i64 {
    _mm_cvtss_si64(a)
}

/// Convert the lower single-precision (32-bit) floating-point element in a to an unsigned 64-bit integer, and store the result in dst.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtss_u64&expand=1902)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtss2usi))]
pub unsafe fn _mm_cvtss_u64(a: __m128) -> u64 {
    transmute(vcvtss2usi64(a.as_f32x4(), _MM_FROUND_CUR_DIRECTION))
}

/// Convert the lower double-precision (64-bit) floating-point element in a to an unsigned 64-bit integer, and store the result in dst.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtsd_u64&expand=1800)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsd2usi))]
pub unsafe fn _mm_cvtsd_u64(a: __m128d) -> u64 {
    transmute(vcvtsd2usi64(a.as_f64x2(), _MM_FROUND_CUR_DIRECTION))
}

/// Convert the signed 64-bit integer b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=mm_cvti32_ss&expand=1643)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsi2ss))]
pub unsafe fn _mm_cvti64_ss(a: __m128, b: i64) -> __m128 {
    let b = b as f32;
    let r = simd_insert(a, 0, b);
    transmute(r)
}

/// Convert the signed 64-bit integer b to a double-precision (64-bit) floating-point element, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvti64_sd&expand=1644)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsi2sd))]
pub unsafe fn _mm_cvti64_sd(a: __m128d, b: i64) -> __m128d {
    let b = b as f64;
    let r = simd_insert(a, 0, b);
    transmute(r)
}

/// Convert the unsigned 64-bit integer b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtu64_ss&expand=2035)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtusi2ss))]
pub unsafe fn _mm_cvtu64_ss(a: __m128, b: u64) -> __m128 {
    let b = b as f32;
    let r = simd_insert(a, 0, b);
    transmute(r)
}

/// Convert the unsigned 64-bit integer b to a double-precision (64-bit) floating-point element, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtu64_sd&expand=2034)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtusi2sd))]
pub unsafe fn _mm_cvtu64_sd(a: __m128d, b: u64) -> __m128d {
    let b = b as f64;
    let r = simd_insert(a, 0, b);
    transmute(r)
}

/// Convert the lower double-precision (64-bit) floating-point element in a to a 64-bit integer with truncation, and store the result in dst.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvttsd_i64&expand=2016)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsd2si))]
pub unsafe fn _mm_cvttsd_i64(a: __m128d) -> i64 {
    transmute(vcvtsd2si64(a.as_f64x2(), _MM_FROUND_CUR_DIRECTION))
}

/// Convert the lower double-precision (64-bit) floating-point element in a to an unsigned 64-bit integer with truncation, and store the result in dst.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvttsd_u64&expand=2021)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsd2usi))]
pub unsafe fn _mm_cvttsd_u64(a: __m128d) -> u64 {
    transmute(vcvtsd2usi64(a.as_f64x2(), _MM_FROUND_CUR_DIRECTION))
}

/// Convert the lower single-precision (32-bit) floating-point element in a to a 64-bit integer with truncation, and store the result in dst.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=#text=_mm_cvttss_i64&expand=2023)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtss2si))]
pub unsafe fn _mm_cvttss_i64(a: __m128) -> i64 {
    transmute(vcvtss2si64(a.as_f32x4(), _MM_FROUND_CUR_DIRECTION))
}

/// Convert the lower single-precision (32-bit) floating-point element in a to an unsigned 64-bit integer with truncation, and store the result in dst.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvttss_u64&expand=2027)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtss2usi))]
pub unsafe fn _mm_cvttss_u64(a: __m128) -> u64 {
    transmute(vcvtss2usi64(a.as_f32x4(), _MM_FROUND_CUR_DIRECTION))
}

/// Convert the signed 64-bit integer b to a double-precision (64-bit) floating-point element, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.
/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
///    (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and suppress exceptions\
///    (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC)     // round down, and suppress exceptions\
///    (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC)     // round up, and suppress exceptions\
///    (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC)        // truncate, and suppress exceptions\
///    _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see _MM_SET_ROUNDING_MODE
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvt_roundi64_sd&expand=1313)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsi2sd, ROUNDING = 8))]
#[rustc_legacy_const_generics(2)]
pub unsafe fn _mm_cvt_roundi64_sd<const ROUNDING: i32>(a: __m128d, b: i64) -> __m128d {
    static_assert_rounding!(ROUNDING);
    let a = a.as_f64x2();
    let r = vcvtsi2sd64(a, b, ROUNDING);
    transmute(r)
}

/// Convert the signed 64-bit integer b to a double-precision (64-bit) floating-point element, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.
/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
///    (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and suppress exceptions\
///    (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC)     // round down, and suppress exceptions\
///    (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC)     // round up, and suppress exceptions\
///    (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC)        // truncate, and suppress exceptions\
///    _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see _MM_SET_ROUNDING_MODE
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvt_roundsi64_sd&expand=1367)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsi2sd, ROUNDING = 8))]
#[rustc_legacy_const_generics(2)]
pub unsafe fn _mm_cvt_roundsi64_sd<const ROUNDING: i32>(a: __m128d, b: i64) -> __m128d {
    static_assert_rounding!(ROUNDING);
    let a = a.as_f64x2();
    let r = vcvtsi2sd64(a, b, ROUNDING);
    transmute(r)
}

/// Convert the signed 64-bit integer b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.
/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
///    (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and suppress exceptions\
///    (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC)     // round down, and suppress exceptions\
///    (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC)     // round up, and suppress exceptions\
///    (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC)        // truncate, and suppress exceptions\
///    _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see _MM_SET_ROUNDING_MODE
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvt_roundi64_ss&expand=1314)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsi2ss, ROUNDING = 8))]
#[rustc_legacy_const_generics(2)]
pub unsafe fn _mm_cvt_roundi64_ss<const ROUNDING: i32>(a: __m128, b: i64) -> __m128 {
    static_assert_rounding!(ROUNDING);
    let a = a.as_f32x4();
    let r = vcvtsi2ss64(a, b, ROUNDING);
    transmute(r)
}

/// Convert the unsigned 64-bit integer b to a double-precision (64-bit) floating-point element, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.\
/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
///    (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and suppress exceptions\
///    (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC)     // round down, and suppress exceptions\
///    (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC)     // round up, and suppress exceptions\
///    (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC)        // truncate, and suppress exceptions\
///    _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see _MM_SET_ROUNDING_MODE
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvt_roundu64_sd&expand=1379)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtusi2sd, ROUNDING = 8))]
#[rustc_legacy_const_generics(2)]
pub unsafe fn _mm_cvt_roundu64_sd<const ROUNDING: i32>(a: __m128d, b: u64) -> __m128d {
    static_assert_rounding!(ROUNDING);
    let a = a.as_f64x2();
    let r = vcvtusi2sd64(a, b, ROUNDING);
    transmute(r)
}

/// Convert the signed 64-bit integer b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.
/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
///    (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and suppress exceptions\
///    (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC)     // round down, and suppress exceptions\
///    (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC)     // round up, and suppress exceptions\
///    (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC)        // truncate, and suppress exceptions\
///    _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see _MM_SET_ROUNDING_MODE
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvt_roundsi64_ss&expand=1368)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsi2ss, ROUNDING = 8))]
#[rustc_legacy_const_generics(2)]
pub unsafe fn _mm_cvt_roundsi64_ss<const ROUNDING: i32>(a: __m128, b: i64) -> __m128 {
    static_assert_rounding!(ROUNDING);
    let a = a.as_f32x4();
    let r = vcvtsi2ss64(a, b, ROUNDING);
    transmute(r)
}

/// Convert the unsigned 64-bit integer b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
///    (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and suppress exceptions\
///    (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC)     // round down, and suppress exceptions\
///    (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC)     // round up, and suppress exceptions\
///    (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC)        // truncate, and suppress exceptions\
///    _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see _MM_SET_ROUNDING_MODE
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvt_roundu64_ss&expand=1380)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtusi2ss, ROUNDING = 8))]
#[rustc_legacy_const_generics(2)]
pub unsafe fn _mm_cvt_roundu64_ss<const ROUNDING: i32>(a: __m128, b: u64) -> __m128 {
    static_assert_rounding!(ROUNDING);
    let a = a.as_f32x4();
    let r = vcvtusi2ss64(a, b, ROUNDING);
    transmute(r)
}

/// Convert the lower double-precision (64-bit) floating-point element in a to a 64-bit integer, and store the result in dst.\
/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
///    (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and suppress exceptions\
///    (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC)     // round down, and suppress exceptions\
///    (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC)     // round up, and suppress exceptions\
///    (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC)        // truncate, and suppress exceptions\
///    _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see _MM_SET_ROUNDING_MODE
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvt_roundsd_si64&expand=1360)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsd2si, ROUNDING = 8))]
#[rustc_legacy_const_generics(1)]
pub unsafe fn _mm_cvt_roundsd_si64<const ROUNDING: i32>(a: __m128d) -> i64 {
    static_assert_rounding!(ROUNDING);
    let a = a.as_f64x2();
    let r = vcvtsd2si64(a, ROUNDING);
    transmute(r)
}

/// Convert the lower double-precision (64-bit) floating-point element in a to a 64-bit integer, and store the result in dst.\
/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
///    (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and suppress exceptions\
///    (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC)     // round down, and suppress exceptions\
///    (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC)     // round up, and suppress exceptions\
///    (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC)        // truncate, and suppress exceptions\
///    _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see _MM_SET_ROUNDING_MODE
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvt_roundsd_i64&expand=1358)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsd2si, ROUNDING = 8))]
#[rustc_legacy_const_generics(1)]
pub unsafe fn _mm_cvt_roundsd_i64<const ROUNDING: i32>(a: __m128d) -> i64 {
    static_assert_rounding!(ROUNDING);
    let a = a.as_f64x2();
    let r = vcvtsd2si64(a, ROUNDING);
    transmute(r)
}

/// Convert the lower double-precision (64-bit) floating-point element in a to an unsigned 64-bit integer, and store the result in dst.\
/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
///    (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and suppress exceptions\
///    (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC)     // round down, and suppress exceptions\
///    (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC)     // round up, and suppress exceptions\
///    (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC)        // truncate, and suppress exceptions\
///    _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see _MM_SET_ROUNDING_MODE
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvt_roundsd_u64&expand=1365)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsd2usi, ROUNDING = 8))]
#[rustc_legacy_const_generics(1)]
pub unsafe fn _mm_cvt_roundsd_u64<const ROUNDING: i32>(a: __m128d) -> u64 {
    static_assert_rounding!(ROUNDING);
    let a = a.as_f64x2();
    let r = vcvtsd2usi64(a, ROUNDING);
    transmute(r)
}

/// Convert the lower single-precision (32-bit) floating-point element in a to a 64-bit integer, and store the result in dst.\
/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
///    (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and suppress exceptions\
///    (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC)     // round down, and suppress exceptions\
///    (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC)     // round up, and suppress exceptions\
///    (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC)        // truncate, and suppress exceptions\
///    _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see _MM_SET_ROUNDING_MODE
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvt_roundss_si64&expand=1375)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtss2si, ROUNDING = 8))]
#[rustc_legacy_const_generics(1)]
pub unsafe fn _mm_cvt_roundss_si64<const ROUNDING: i32>(a: __m128) -> i64 {
    static_assert_rounding!(ROUNDING);
    let a = a.as_f32x4();
    let r = vcvtss2si64(a, ROUNDING);
    transmute(r)
}

/// Convert the lower single-precision (32-bit) floating-point element in a to a 64-bit integer, and store the result in dst.\
/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
///    (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and suppress exceptions\
///    (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC)     // round down, and suppress exceptions\
///    (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC)     // round up, and suppress exceptions\
///    (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC)        // truncate, and suppress exceptions\
///    _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see _MM_SET_ROUNDING_MODE
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvt_roundss_i64&expand=1370)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtss2si, ROUNDING = 8))]
#[rustc_legacy_const_generics(1)]
pub unsafe fn _mm_cvt_roundss_i64<const ROUNDING: i32>(a: __m128) -> i64 {
    static_assert_rounding!(ROUNDING);
    let a = a.as_f32x4();
    let r = vcvtss2si64(a, ROUNDING);
    transmute(r)
}

/// Convert the lower single-precision (32-bit) floating-point element in a to an unsigned 64-bit integer, and store the result in dst.\
/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
///    (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and suppress exceptions\
///    (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC)     // round down, and suppress exceptions\
///    (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC)     // round up, and suppress exceptions\
///    (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC)        // truncate, and suppress exceptions\
///    _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see _MM_SET_ROUNDING_MODE
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvt_roundss_u64&expand=1377)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtss2usi, ROUNDING = 8))]
#[rustc_legacy_const_generics(1)]
pub unsafe fn _mm_cvt_roundss_u64<const ROUNDING: i32>(a: __m128) -> u64 {
    static_assert_rounding!(ROUNDING);
    let a = a.as_f32x4();
    let r = vcvtss2usi64(a, ROUNDING);
    transmute(r)
}

/// Convert the lower double-precision (64-bit) floating-point element in a to a 64-bit integer with truncation, and store the result in dst.\
/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtt_roundsd_si64&expand=1931)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsd2si, SAE = 8))]
#[rustc_legacy_const_generics(1)]
pub unsafe fn _mm_cvtt_roundsd_si64<const SAE: i32>(a: __m128d) -> i64 {
    static_assert_sae!(SAE);
    let a = a.as_f64x2();
    let r = vcvtsd2si64(a, SAE);
    transmute(r)
}

/// Convert the lower double-precision (64-bit) floating-point element in a to a 64-bit integer with truncation, and store the result in dst.\
/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtt_roundsd_i64&expand=1929)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsd2si, SAE = 8))]
#[rustc_legacy_const_generics(1)]
pub unsafe fn _mm_cvtt_roundsd_i64<const SAE: i32>(a: __m128d) -> i64 {
    static_assert_sae!(SAE);
    let a = a.as_f64x2();
    let r = vcvtsd2si64(a, SAE);
    transmute(r)
}

/// Convert the lower double-precision (64-bit) floating-point element in a to an unsigned 64-bit integer with truncation, and store the result in dst.\
/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtt_roundsd_u64&expand=1933)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtsd2usi, SAE = 8))]
#[rustc_legacy_const_generics(1)]
pub unsafe fn _mm_cvtt_roundsd_u64<const SAE: i32>(a: __m128d) -> u64 {
    static_assert_sae!(SAE);
    let a = a.as_f64x2();
    let r = vcvtsd2usi64(a, SAE);
    transmute(r)
}

/// Convert the lower single-precision (32-bit) floating-point element in a to a 64-bit integer with truncation, and store the result in dst.\
/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtt_roundss_i64&expand=1935)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtss2si, SAE = 8))]
#[rustc_legacy_const_generics(1)]
pub unsafe fn _mm_cvtt_roundss_i64<const SAE: i32>(a: __m128) -> i64 {
    static_assert_sae!(SAE);
    let a = a.as_f32x4();
    let r = vcvtss2si64(a, SAE);
    transmute(r)
}

/// Convert the lower single-precision (32-bit) floating-point element in a to a 64-bit integer with truncation, and store the result in dst.\
/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtt_roundss_si64&expand=1937)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtss2si, SAE = 8))]
#[rustc_legacy_const_generics(1)]
pub unsafe fn _mm_cvtt_roundss_si64<const SAE: i32>(a: __m128) -> i64 {
    static_assert_sae!(SAE);
    let a = a.as_f32x4();
    let r = vcvtss2si64(a, SAE);
    transmute(r)
}

/// Convert the lower single-precision (32-bit) floating-point element in a to an unsigned 64-bit integer with truncation, and store the result in dst.\
/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
///
/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtt_roundss_u64&expand=1939)
#[inline]
#[target_feature(enable = "avx512f")]
#[cfg_attr(test, assert_instr(vcvtss2usi, SAE = 8))]
#[rustc_legacy_const_generics(1)]
pub unsafe fn _mm_cvtt_roundss_u64<const SAE: i32>(a: __m128) -> u64 {
    static_assert_sae!(SAE);
    let a = a.as_f32x4();
    let r = vcvtss2usi64(a, SAE);
    transmute(r)
}

#[allow(improper_ctypes)]
extern "C" {
    #[link_name = "llvm.x86.avx512.vcvtss2si64"]
    fn vcvtss2si64(a: f32x4, rounding: i32) -> i64;
    #[link_name = "llvm.x86.avx512.vcvtss2usi64"]
    fn vcvtss2usi64(a: f32x4, rounding: i32) -> u64;
    #[link_name = "llvm.x86.avx512.vcvtsd2si64"]
    fn vcvtsd2si64(a: f64x2, rounding: i32) -> i64;
    #[link_name = "llvm.x86.avx512.vcvtsd2usi64"]
    fn vcvtsd2usi64(a: f64x2, rounding: i32) -> u64;

    #[link_name = "llvm.x86.avx512.cvtsi2ss64"]
    fn vcvtsi2ss64(a: f32x4, b: i64, rounding: i32) -> f32x4;
    #[link_name = "llvm.x86.avx512.cvtsi2sd64"]
    fn vcvtsi2sd64(a: f64x2, b: i64, rounding: i32) -> f64x2;
    #[link_name = "llvm.x86.avx512.cvtusi642ss"]
    fn vcvtusi2ss64(a: f32x4, b: u64, rounding: i32) -> f32x4;
    #[link_name = "llvm.x86.avx512.cvtusi642sd"]
    fn vcvtusi2sd64(a: f64x2, b: u64, rounding: i32) -> f64x2;
}

#[cfg(test)]
mod tests {

    use stdarch_test::simd_test;

    use crate::core_arch::x86::*;
    use crate::core_arch::x86_64::*;
    use crate::hint::black_box;

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_abs_epi64() {
        let a = _mm512_set_epi64(0, 1, -1, i64::MAX, i64::MIN, 100, -100, -32);
        let r = _mm512_abs_epi64(a);
        let e = _mm512_set_epi64(0, 1, 1, i64::MAX, i64::MAX.wrapping_add(1), 100, 100, 32);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_abs_epi64() {
        let a = _mm512_set_epi64(0, 1, -1, i64::MAX, i64::MIN, 100, -100, -32);
        let r = _mm512_mask_abs_epi64(a, 0, a);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_abs_epi64(a, 0b11111111, a);
        let e = _mm512_set_epi64(0, 1, 1, i64::MAX, i64::MIN, 100, 100, 32);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_abs_epi64() {
        let a = _mm512_set_epi64(0, 1, -1, i64::MAX, i64::MIN, 100, -100, -32);
        let r = _mm512_maskz_abs_epi64(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_abs_epi64(0b11111111, a);
        let e = _mm512_set_epi64(0, 1, 1, i64::MAX, i64::MIN, 100, 100, 32);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_abs_epi64() {
        let a = _mm256_set_epi64x(i64::MAX, i64::MIN, 100, -100);
        let r = _mm256_abs_epi64(a);
        let e = _mm256_set_epi64x(i64::MAX, i64::MAX.wrapping_add(1), 100, 100);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_abs_epi64() {
        let a = _mm256_set_epi64x(i64::MAX, i64::MIN, 100, -100);
        let r = _mm256_mask_abs_epi64(a, 0, a);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_abs_epi64(a, 0b00001111, a);
        let e = _mm256_set_epi64x(i64::MAX, i64::MAX.wrapping_add(1), 100, 100);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_abs_epi64() {
        let a = _mm256_set_epi64x(i64::MAX, i64::MIN, 100, -100);
        let r = _mm256_maskz_abs_epi64(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_abs_epi64(0b00001111, a);
        let e = _mm256_set_epi64x(i64::MAX, i64::MAX.wrapping_add(1), 100, 100);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_abs_pd() {
        let a = _mm512_setr_pd(0., 1., -1., f64::MAX, f64::MIN, 100., -100., -32.);
        let r = _mm512_abs_pd(a);
        let e = _mm512_setr_pd(0., 1., 1., f64::MAX, f64::MAX, 100., 100., 32.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_abs_pd() {
        let a = _mm512_setr_pd(0., 1., -1., f64::MAX, f64::MIN, 100., -100., -32.);
        let r = _mm512_mask_abs_pd(a, 0, a);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_abs_pd(a, 0b00001111, a);
        let e = _mm512_setr_pd(0., 1., 1., f64::MAX, f64::MIN, 100., -100., -32.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_mov_epi64() {
        let src = _mm512_set1_epi64(1);
        let a = _mm512_set1_epi64(2);
        let r = _mm512_mask_mov_epi64(src, 0, a);
        assert_eq_m512i(r, src);
        let r = _mm512_mask_mov_epi64(src, 0b11111111, a);
        assert_eq_m512i(r, a);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_mov_epi64() {
        let a = _mm512_set1_epi64(2);
        let r = _mm512_maskz_mov_epi64(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_mov_epi64(0b11111111, a);
        assert_eq_m512i(r, a);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_mov_epi64() {
        let src = _mm256_set1_epi64x(1);
        let a = _mm256_set1_epi64x(2);
        let r = _mm256_mask_mov_epi64(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm256_mask_mov_epi64(src, 0b00001111, a);
        assert_eq_m256i(r, a);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_mov_epi64() {
        let a = _mm256_set1_epi64x(2);
        let r = _mm256_maskz_mov_epi64(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_mov_epi64(0b00001111, a);
        assert_eq_m256i(r, a);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_mov_epi64() {
        let src = _mm_set1_epi64x(1);
        let a = _mm_set1_epi64x(2);
        let r = _mm_mask_mov_epi64(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_mov_epi64(src, 0b00000011, a);
        assert_eq_m128i(r, a);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_mov_epi64() {
        let a = _mm_set1_epi64x(2);
        let r = _mm_maskz_mov_epi64(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_mov_epi64(0b00000011, a);
        assert_eq_m128i(r, a);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_mov_pd() {
        let src = _mm512_set1_pd(1.);
        let a = _mm512_set1_pd(2.);
        let r = _mm512_mask_mov_pd(src, 0, a);
        assert_eq_m512d(r, src);
        let r = _mm512_mask_mov_pd(src, 0b11111111, a);
        assert_eq_m512d(r, a);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_mov_pd() {
        let a = _mm512_set1_pd(2.);
        let r = _mm512_maskz_mov_pd(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_mov_pd(0b11111111, a);
        assert_eq_m512d(r, a);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_mov_pd() {
        let src = _mm256_set1_pd(1.);
        let a = _mm256_set1_pd(2.);
        let r = _mm256_mask_mov_pd(src, 0, a);
        assert_eq_m256d(r, src);
        let r = _mm256_mask_mov_pd(src, 0b00001111, a);
        assert_eq_m256d(r, a);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_mov_pd() {
        let a = _mm256_set1_pd(2.);
        let r = _mm256_maskz_mov_pd(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_mov_pd(0b00001111, a);
        assert_eq_m256d(r, a);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_mov_pd() {
        let src = _mm_set1_pd(1.);
        let a = _mm_set1_pd(2.);
        let r = _mm_mask_mov_pd(src, 0, a);
        assert_eq_m128d(r, src);
        let r = _mm_mask_mov_pd(src, 0b00000011, a);
        assert_eq_m128d(r, a);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_mov_pd() {
        let a = _mm_set1_pd(2.);
        let r = _mm_maskz_mov_pd(0, a);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_mov_pd(0b00000011, a);
        assert_eq_m128d(r, a);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_add_epi64() {
        let a = _mm512_setr_epi64(0, 1, -1, i64::MAX, i64::MIN, 100, -100, -32);
        let b = _mm512_set1_epi64(1);
        let r = _mm512_add_epi64(a, b);
        let e = _mm512_setr_epi64(1, 2, 0, i64::MIN, i64::MIN + 1, 101, -99, -31);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_add_epi64() {
        let a = _mm512_setr_epi64(0, 1, -1, i64::MAX, i64::MIN, 100, -100, -32);
        let b = _mm512_set1_epi64(1);
        let r = _mm512_mask_add_epi64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_add_epi64(a, 0b00001111, a, b);
        let e = _mm512_setr_epi64(1, 2, 0, i64::MIN, i64::MIN, 100, -100, -32);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_add_epi64() {
        let a = _mm512_setr_epi64(0, 1, -1, i64::MAX, i64::MIN, 100, -100, -32);
        let b = _mm512_set1_epi64(1);
        let r = _mm512_maskz_add_epi64(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_add_epi64(0b00001111, a, b);
        let e = _mm512_setr_epi64(1, 2, 0, i64::MIN, 0, 0, 0, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_add_epi64() {
        let a = _mm256_set_epi64x(1, -1, i64::MAX, i64::MIN);
        let b = _mm256_set1_epi64x(1);
        let r = _mm256_mask_add_epi64(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_add_epi64(a, 0b00001111, a, b);
        let e = _mm256_set_epi64x(2, 0, i64::MIN, i64::MIN + 1);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_add_epi64() {
        let a = _mm256_set_epi64x(1, -1, i64::MAX, i64::MIN);
        let b = _mm256_set1_epi64x(1);
        let r = _mm256_maskz_add_epi64(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_add_epi64(0b00001111, a, b);
        let e = _mm256_set_epi64x(2, 0, i64::MIN, i64::MIN + 1);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_add_epi64() {
        let a = _mm_set_epi64x(i64::MAX, i64::MIN);
        let b = _mm_set1_epi64x(1);
        let r = _mm_mask_add_epi64(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_add_epi64(a, 0b00000011, a, b);
        let e = _mm_set_epi64x(i64::MIN, i64::MIN + 1);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_add_epi64() {
        let a = _mm_set_epi64x(i64::MAX, i64::MIN);
        let b = _mm_set1_epi64x(1);
        let r = _mm_maskz_add_epi64(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_add_epi64(0b00000011, a, b);
        let e = _mm_set_epi64x(i64::MIN, i64::MIN + 1);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_add_pd() {
        let a = _mm512_setr_pd(0., 1., -1., f64::MAX, f64::MIN, 100., -100., -32.);
        let b = _mm512_set1_pd(1.);
        let r = _mm512_add_pd(a, b);
        let e = _mm512_setr_pd(1., 2., 0., f64::MAX, f64::MIN + 1., 101., -99., -31.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_add_pd() {
        let a = _mm512_setr_pd(0., 1., -1., f64::MAX, f64::MIN, 100., -100., -32.);
        let b = _mm512_set1_pd(1.);
        let r = _mm512_mask_add_pd(a, 0, a, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_add_pd(a, 0b00001111, a, b);
        let e = _mm512_setr_pd(1., 2., 0., f64::MAX, f64::MIN, 100., -100., -32.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_add_pd() {
        let a = _mm512_setr_pd(0., 1., -1., f64::MAX, f64::MIN, 100., -100., -32.);
        let b = _mm512_set1_pd(1.);
        let r = _mm512_maskz_add_pd(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_add_pd(0b00001111, a, b);
        let e = _mm512_setr_pd(1., 2., 0., f64::MAX, 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_add_pd() {
        let a = _mm256_set_pd(1., -1., f64::MAX, f64::MIN);
        let b = _mm256_set1_pd(1.);
        let r = _mm256_mask_add_pd(a, 0, a, b);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_add_pd(a, 0b00001111, a, b);
        let e = _mm256_set_pd(2., 0., f64::MAX, f64::MIN + 1.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_add_pd() {
        let a = _mm256_set_pd(1., -1., f64::MAX, f64::MIN);
        let b = _mm256_set1_pd(1.);
        let r = _mm256_maskz_add_pd(0, a, b);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_add_pd(0b00001111, a, b);
        let e = _mm256_set_pd(2., 0., f64::MAX, f64::MIN + 1.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_add_pd() {
        let a = _mm_set_pd(f64::MAX, f64::MIN);
        let b = _mm_set1_pd(1.);
        let r = _mm_mask_add_pd(a, 0, a, b);
        assert_eq_m128d(r, a);
        let r = _mm_mask_add_pd(a, 0b00000011, a, b);
        let e = _mm_set_pd(f64::MAX, f64::MIN + 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_add_pd() {
        let a = _mm_set_pd(f64::MAX, f64::MIN);
        let b = _mm_set1_pd(1.);
        let r = _mm_maskz_add_pd(0, a, b);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_add_pd(0b00000011, a, b);
        let e = _mm_set_pd(f64::MAX, f64::MIN + 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_sub_epi64() {
        let a = _mm512_setr_epi64(0, 1, -1, i64::MAX, i64::MIN, 100, -100, -32);
        let b = _mm512_set1_epi64(1);
        let r = _mm512_sub_epi64(a, b);
        let e = _mm512_setr_epi64(-1, 0, -2, i64::MAX - 1, i64::MAX, 99, -101, -33);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_sub_epi64() {
        let a = _mm512_setr_epi64(0, 1, -1, i64::MAX, i64::MIN, 100, -100, -32);
        let b = _mm512_set1_epi64(1);
        let r = _mm512_mask_sub_epi64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_sub_epi64(a, 0b00001111, a, b);
        let e = _mm512_setr_epi64(-1, 0, -2, i64::MAX - 1, i64::MIN, 100, -100, -32);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_sub_epi64() {
        let a = _mm512_setr_epi64(0, 1, -1, i64::MAX, i64::MIN, 100, -100, -32);
        let b = _mm512_set1_epi64(1);
        let r = _mm512_maskz_sub_epi64(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_sub_epi64(0b00001111, a, b);
        let e = _mm512_setr_epi64(-1, 0, -2, i64::MAX - 1, 0, 0, 0, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_sub_epi64() {
        let a = _mm256_set_epi64x(1, -1, i64::MAX, i64::MIN);
        let b = _mm256_set1_epi64x(1);
        let r = _mm256_mask_sub_epi64(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_sub_epi64(a, 0b00001111, a, b);
        let e = _mm256_set_epi64x(0, -2, i64::MAX - 1, i64::MAX);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_sub_epi64() {
        let a = _mm256_set_epi64x(1, -1, i64::MAX, i64::MIN);
        let b = _mm256_set1_epi64x(1);
        let r = _mm256_maskz_sub_epi64(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_sub_epi64(0b00001111, a, b);
        let e = _mm256_set_epi64x(0, -2, i64::MAX - 1, i64::MAX);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_sub_epi64() {
        let a = _mm_set_epi64x(i64::MAX, i64::MIN);
        let b = _mm_set1_epi64x(1);
        let r = _mm_mask_sub_epi64(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_sub_epi64(a, 0b00000011, a, b);
        let e = _mm_set_epi64x(i64::MAX - 1, i64::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_sub_epi64() {
        let a = _mm_set_epi64x(i64::MAX, i64::MIN);
        let b = _mm_set1_epi64x(1);
        let r = _mm_maskz_sub_epi64(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_sub_epi64(0b00000011, a, b);
        let e = _mm_set_epi64x(i64::MAX - 1, i64::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_sub_pd() {
        let a = _mm512_setr_pd(0., 1., -1., f64::MAX, f64::MIN, 100., -100., -32.);
        let b = _mm512_set1_pd(1.);
        let r = _mm512_sub_pd(a, b);
        let e = _mm512_setr_pd(-1., 0., -2., f64::MAX - 1., f64::MIN, 99., -101., -33.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_sub_pd() {
        let a = _mm512_setr_pd(0., 1., -1., f64::MAX, f64::MIN, 100., -100., -32.);
        let b = _mm512_set1_pd(1.);
        let r = _mm512_mask_sub_pd(a, 0, a, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_sub_pd(a, 0b00001111, a, b);
        let e = _mm512_setr_pd(-1., 0., -2., f64::MAX - 1., f64::MIN, 100., -100., -32.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_sub_pd() {
        let a = _mm512_setr_pd(0., 1., -1., f64::MAX, f64::MIN, 100., -100., -32.);
        let b = _mm512_set1_pd(1.);
        let r = _mm512_maskz_sub_pd(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_sub_pd(0b00001111, a, b);
        let e = _mm512_setr_pd(-1., 0., -2., f64::MAX - 1., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_sub_pd() {
        let a = _mm256_set_pd(1., -1., f64::MAX, f64::MIN);
        let b = _mm256_set1_pd(1.);
        let r = _mm256_mask_sub_pd(a, 0, a, b);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_sub_pd(a, 0b00001111, a, b);
        let e = _mm256_set_pd(0., -2., f64::MAX - 1., f64::MIN);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_sub_pd() {
        let a = _mm256_set_pd(1., -1., f64::MAX, f64::MIN);
        let b = _mm256_set1_pd(1.);
        let r = _mm256_maskz_sub_pd(0, a, b);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_sub_pd(0b00001111, a, b);
        let e = _mm256_set_pd(0., -2., f64::MAX - 1., f64::MIN);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_sub_pd() {
        let a = _mm_set_pd(f64::MAX, f64::MIN);
        let b = _mm_set1_pd(1.);
        let r = _mm_mask_sub_pd(a, 0, a, b);
        assert_eq_m128d(r, a);
        let r = _mm_mask_sub_pd(a, 0b00000011, a, b);
        let e = _mm_set_pd(f64::MAX - 1., f64::MIN);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_sub_pd() {
        let a = _mm_set_pd(f64::MAX, f64::MIN);
        let b = _mm_set1_pd(1.);
        let r = _mm_maskz_sub_pd(0, a, b);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_sub_pd(0b00000011, a, b);
        let e = _mm_set_pd(f64::MAX - 1., f64::MIN);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mul_epi32() {
        let a = _mm512_set1_epi32(1);
        let b = _mm512_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
        let r = _mm512_mul_epi32(a, b);
        let e = _mm512_set_epi64(15, 13, 11, 9, 7, 5, 3, 1);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_mul_epi32() {
        let a = _mm512_set1_epi32(1);
        let b = _mm512_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
        let r = _mm512_mask_mul_epi32(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_mul_epi32(a, 0b00001111, a, b);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 | 1 << 32, 1 | 1 << 32, 1 | 1 << 32, 1 | 1 << 32,
            7, 5, 3, 1,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_mul_epi32() {
        let a = _mm512_set1_epi32(1);
        let b = _mm512_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
        let r = _mm512_maskz_mul_epi32(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_mul_epi32(0b00001111, a, b);
        let e = _mm512_set_epi64(0, 0, 0, 0, 7, 5, 3, 1);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_mul_epi32() {
        let a = _mm256_set1_epi32(1);
        let b = _mm256_set_epi32(1, 2, 3, 4, 5, 6, 7, 8);
        let r = _mm256_mask_mul_epi32(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_mul_epi32(a, 0b00001111, a, b);
        let e = _mm256_set_epi64x(2, 4, 6, 8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_mul_epi32() {
        let a = _mm256_set1_epi32(1);
        let b = _mm256_set_epi32(1, 2, 3, 4, 5, 6, 7, 8);
        let r = _mm256_maskz_mul_epi32(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_mul_epi32(0b00001111, a, b);
        let e = _mm256_set_epi64x(2, 4, 6, 8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_mul_epi32() {
        let a = _mm_set1_epi32(1);
        let b = _mm_set_epi32(1, 2, 3, 4);
        let r = _mm_mask_mul_epi32(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_mul_epi32(a, 0b00000011, a, b);
        let e = _mm_set_epi64x(2, 4);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_mul_epi32() {
        let a = _mm_set1_epi32(1);
        let b = _mm_set_epi32(1, 2, 3, 4);
        let r = _mm_maskz_mul_epi32(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_mul_epi32(0b00000011, a, b);
        let e = _mm_set_epi64x(2, 4);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mul_epu32() {
        let a = _mm512_set1_epi32(1);
        let b = _mm512_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
        let r = _mm512_mul_epu32(a, b);
        let e = _mm512_set_epi64(15, 13, 11, 9, 7, 5, 3, 1);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_mul_epu32() {
        let a = _mm512_set1_epi32(1);
        let b = _mm512_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
        let r = _mm512_mask_mul_epu32(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_mul_epu32(a, 0b00001111, a, b);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 | 1 << 32, 1 | 1 << 32, 1 | 1 << 32, 1 | 1 << 32,
            7, 5, 3, 1,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_mul_epu32() {
        let a = _mm512_set1_epi32(1);
        let b = _mm512_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
        let r = _mm512_maskz_mul_epu32(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_mul_epu32(0b00001111, a, b);
        let e = _mm512_set_epi64(0, 0, 0, 0, 7, 5, 3, 1);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_mul_epu32() {
        let a = _mm256_set1_epi32(1);
        let b = _mm256_set_epi32(1, 2, 3, 4, 5, 6, 7, 8);
        let r = _mm256_mask_mul_epu32(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_mul_epu32(a, 0b00001111, a, b);
        let e = _mm256_set_epi64x(2, 4, 6, 8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_mul_epu32() {
        let a = _mm256_set1_epi32(1);
        let b = _mm256_set_epi32(1, 2, 3, 4, 5, 6, 7, 8);
        let r = _mm256_maskz_mul_epu32(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_mul_epu32(0b00001111, a, b);
        let e = _mm256_set_epi64x(2, 4, 6, 8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_mul_epu32() {
        let a = _mm_set1_epi32(1);
        let b = _mm_set_epi32(1, 2, 3, 4);
        let r = _mm_mask_mul_epu32(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_mul_epu32(a, 0b00000011, a, b);
        let e = _mm_set_epi64x(2, 4);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_mul_epu32() {
        let a = _mm_set1_epi32(1);
        let b = _mm_set_epi32(1, 2, 3, 4);
        let r = _mm_maskz_mul_epu32(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_mul_epu32(0b00000011, a, b);
        let e = _mm_set_epi64x(2, 4);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mullox_epi64() {
        let a = _mm512_setr_epi64(0, 1, i64::MAX, i64::MIN, i64::MAX, 100, -100, -32);
        let b = _mm512_set1_epi64(2);
        let r = _mm512_mullox_epi64(a, b);
        let e = _mm512_setr_epi64(0, 2, -2, 0, -2, 200, -200, -64);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_mullox_epi64() {
        let a = _mm512_setr_epi64(0, 1, i64::MAX, i64::MIN, i64::MAX, 100, -100, -32);
        let b = _mm512_set1_epi64(2);
        let r = _mm512_mask_mullox_epi64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_mullox_epi64(a, 0b00001111, a, b);
        let e = _mm512_setr_epi64(0, 2, -2, 0, i64::MAX, 100, -100, -32);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mul_pd() {
        let a = _mm512_setr_pd(0., 1., f64::MAX, f64::MIN, f64::MAX, f64::MIN, -100., -32.);
        let b = _mm512_set1_pd(2.);
        let r = _mm512_mul_pd(a, b);
        #[rustfmt::skip]
        let e = _mm512_setr_pd(
            0., 2., f64::INFINITY, f64::NEG_INFINITY,
            f64::INFINITY, f64::NEG_INFINITY, -200., -64.,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_mul_pd() {
        let a = _mm512_setr_pd(0., 1., f64::MAX, f64::MIN, f64::MAX, f64::MIN, -100., -32.);
        let b = _mm512_set1_pd(2.);
        let r = _mm512_mask_mul_pd(a, 0, a, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_mul_pd(a, 0b00001111, a, b);
        #[rustfmt::skip]
        let e = _mm512_setr_pd(
            0., 2., f64::INFINITY, f64::NEG_INFINITY,
            f64::MAX, f64::MIN, -100., -32.,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_mul_pd() {
        let a = _mm512_setr_pd(0., 1., f64::MAX, f64::MIN, f64::MAX, f64::MIN, -100., -32.);
        let b = _mm512_set1_pd(2.);
        let r = _mm512_maskz_mul_pd(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_mul_pd(0b00001111, a, b);
        let e = _mm512_setr_pd(0., 2., f64::INFINITY, f64::NEG_INFINITY, 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_mul_pd() {
        let a = _mm256_set_pd(0., 1., f64::MAX, f64::MIN);
        let b = _mm256_set1_pd(2.);
        let r = _mm256_mask_mul_pd(a, 0, a, b);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_mul_pd(a, 0b00001111, a, b);
        let e = _mm256_set_pd(0., 2., f64::INFINITY, f64::NEG_INFINITY);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_mul_pd() {
        let a = _mm256_set_pd(0., 1., f64::MAX, f64::MIN);
        let b = _mm256_set1_pd(2.);
        let r = _mm256_maskz_mul_pd(0, a, b);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_mul_pd(0b00001111, a, b);
        let e = _mm256_set_pd(0., 2., f64::INFINITY, f64::NEG_INFINITY);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_mul_pd() {
        let a = _mm_set_pd(f64::MAX, f64::MIN);
        let b = _mm_set1_pd(2.);
        let r = _mm_mask_mul_pd(a, 0, a, b);
        assert_eq_m128d(r, a);
        let r = _mm_mask_mul_pd(a, 0b00000011, a, b);
        let e = _mm_set_pd(f64::INFINITY, f64::NEG_INFINITY);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_mul_pd() {
        let a = _mm_set_pd(f64::MAX, f64::MIN);
        let b = _mm_set1_pd(2.);
        let r = _mm_maskz_mul_pd(0, a, b);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_mul_pd(0b00000011, a, b);
        let e = _mm_set_pd(f64::INFINITY, f64::NEG_INFINITY);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_div_pd() {
        let a = _mm512_setr_pd(0., 1., f64::MAX, f64::MIN, f64::MAX, f64::MIN, -100., -32.);
        let b = _mm512_setr_pd(2., 2., 0., 0., 0., 0., 2., 2.);
        let r = _mm512_div_pd(a, b);
        #[rustfmt::skip]
        let e = _mm512_setr_pd(
            0., 0.5, f64::INFINITY, f64::NEG_INFINITY,
            f64::INFINITY, f64::NEG_INFINITY, -50., -16.,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_div_pd() {
        let a = _mm512_setr_pd(0., 1., f64::MAX, f64::MIN, f64::MAX, f64::MIN, -100., -32.);
        let b = _mm512_setr_pd(2., 2., 0., 0., 0., 0., 2., 2.);
        let r = _mm512_mask_div_pd(a, 0, a, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_div_pd(a, 0b00001111, a, b);
        #[rustfmt::skip]
        let e = _mm512_setr_pd(
            0., 0.5, f64::INFINITY, f64::NEG_INFINITY,
            f64::MAX, f64::MIN, -100., -32.,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_div_pd() {
        let a = _mm512_setr_pd(0., 1., f64::MAX, f64::MIN, f64::MAX, f64::MIN, -100., -32.);
        let b = _mm512_setr_pd(2., 2., 0., 0., 0., 0., 2., 2.);
        let r = _mm512_maskz_div_pd(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_div_pd(0b00001111, a, b);
        let e = _mm512_setr_pd(0., 0.5, f64::INFINITY, f64::NEG_INFINITY, 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_div_pd() {
        let a = _mm256_set_pd(0., 1., f64::MAX, f64::MIN);
        let b = _mm256_set_pd(2., 2., 0., 0.);
        let r = _mm256_mask_div_pd(a, 0, a, b);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_div_pd(a, 0b00001111, a, b);
        let e = _mm256_set_pd(0., 0.5, f64::INFINITY, f64::NEG_INFINITY);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_div_pd() {
        let a = _mm256_set_pd(0., 1., f64::MAX, f64::MIN);
        let b = _mm256_set_pd(2., 2., 0., 0.);
        let r = _mm256_maskz_div_pd(0, a, b);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_div_pd(0b00001111, a, b);
        let e = _mm256_set_pd(0., 0.5, f64::INFINITY, f64::NEG_INFINITY);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_div_pd() {
        let a = _mm_set_pd(f64::MAX, f64::MIN);
        let b = _mm_set_pd(0., 0.);
        let r = _mm_mask_div_pd(a, 0, a, b);
        assert_eq_m128d(r, a);
        let r = _mm_mask_div_pd(a, 0b00000011, a, b);
        let e = _mm_set_pd(f64::INFINITY, f64::NEG_INFINITY);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_div_pd() {
        let a = _mm_set_pd(f64::MAX, f64::MIN);
        let b = _mm_set_pd(0., 0.);
        let r = _mm_maskz_div_pd(0, a, b);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_div_pd(0b00000011, a, b);
        let e = _mm_set_pd(f64::INFINITY, f64::NEG_INFINITY);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_max_epi64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let b = _mm512_setr_epi64(7, 6, 5, 4, 3, 2, 1, 0);
        let r = _mm512_max_epi64(a, b);
        let e = _mm512_setr_epi64(7, 6, 5, 4, 4, 5, 6, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_max_epi64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let b = _mm512_setr_epi64(7, 6, 5, 4, 3, 2, 1, 0);
        let r = _mm512_mask_max_epi64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_max_epi64(a, 0b00001111, a, b);
        let e = _mm512_setr_epi64(7, 6, 5, 4, 4, 5, 6, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_max_epi64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let b = _mm512_setr_epi64(7, 6, 5, 4, 3, 2, 1, 0);
        let r = _mm512_maskz_max_epi64(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_max_epi64(0b00001111, a, b);
        let e = _mm512_setr_epi64(7, 6, 5, 4, 0, 0, 0, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_max_epi64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let b = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_max_epi64(a, b);
        let e = _mm256_set_epi64x(3, 2, 2, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_max_epi64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let b = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_mask_max_epi64(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_max_epi64(a, 0b00001111, a, b);
        let e = _mm256_set_epi64x(3, 2, 2, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_max_epi64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let b = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_maskz_max_epi64(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_max_epi64(0b00001111, a, b);
        let e = _mm256_set_epi64x(3, 2, 2, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_max_epi64() {
        let a = _mm_set_epi64x(2, 3);
        let b = _mm_set_epi64x(3, 2);
        let r = _mm_max_epi64(a, b);
        let e = _mm_set_epi64x(3, 3);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_max_epi64() {
        let a = _mm_set_epi64x(2, 3);
        let b = _mm_set_epi64x(3, 2);
        let r = _mm_mask_max_epi64(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_max_epi64(a, 0b00000011, a, b);
        let e = _mm_set_epi64x(3, 3);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_max_epi64() {
        let a = _mm_set_epi64x(2, 3);
        let b = _mm_set_epi64x(3, 2);
        let r = _mm_maskz_max_epi64(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_max_epi64(0b00000011, a, b);
        let e = _mm_set_epi64x(3, 3);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_max_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_setr_pd(7., 6., 5., 4., 3., 2., 1., 0.);
        let r = _mm512_max_pd(a, b);
        let e = _mm512_setr_pd(7., 6., 5., 4., 4., 5., 6., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_max_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_setr_pd(7., 6., 5., 4., 3., 2., 1., 0.);
        let r = _mm512_mask_max_pd(a, 0, a, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_max_pd(a, 0b00001111, a, b);
        let e = _mm512_setr_pd(7., 6., 5., 4., 4., 5., 6., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_max_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_setr_pd(7., 6., 5., 4., 3., 2., 1., 0.);
        let r = _mm512_maskz_max_pd(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_max_pd(0b00001111, a, b);
        let e = _mm512_setr_pd(7., 6., 5., 4., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_max_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let b = _mm256_set_pd(3., 2., 1., 0.);
        let r = _mm256_mask_max_pd(a, 0, a, b);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_max_pd(a, 0b00001111, a, b);
        let e = _mm256_set_pd(3., 2., 2., 3.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_max_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let b = _mm256_set_pd(3., 2., 1., 0.);
        let r = _mm256_maskz_max_pd(0, a, b);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_max_pd(0b00001111, a, b);
        let e = _mm256_set_pd(3., 2., 2., 3.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_max_pd() {
        let a = _mm_set_pd(2., 3.);
        let b = _mm_set_pd(3., 2.);
        let r = _mm_mask_max_pd(a, 0, a, b);
        assert_eq_m128d(r, a);
        let r = _mm_mask_max_pd(a, 0b00000011, a, b);
        let e = _mm_set_pd(3., 3.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_max_pd() {
        let a = _mm_set_pd(2., 3.);
        let b = _mm_set_pd(3., 2.);
        let r = _mm_maskz_max_pd(0, a, b);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_max_pd(0b00000011, a, b);
        let e = _mm_set_pd(3., 3.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_max_epu64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let b = _mm512_setr_epi64(7, 6, 5, 4, 3, 2, 1, 0);
        let r = _mm512_max_epu64(a, b);
        let e = _mm512_setr_epi64(7, 6, 5, 4, 4, 5, 6, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_max_epu64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let b = _mm512_setr_epi64(7, 6, 5, 4, 3, 2, 1, 0);
        let r = _mm512_mask_max_epu64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_max_epu64(a, 0b00001111, a, b);
        let e = _mm512_setr_epi64(7, 6, 5, 4, 4, 5, 6, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_max_epu64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let b = _mm512_setr_epi64(7, 6, 5, 4, 3, 2, 1, 0);
        let r = _mm512_maskz_max_epu64(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_max_epu64(0b00001111, a, b);
        let e = _mm512_setr_epi64(7, 6, 5, 4, 0, 0, 0, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_max_epu64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let b = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_max_epu64(a, b);
        let e = _mm256_set_epi64x(3, 2, 2, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_max_epu64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let b = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_mask_max_epu64(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_max_epu64(a, 0b00001111, a, b);
        let e = _mm256_set_epi64x(3, 2, 2, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_max_epu64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let b = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_maskz_max_epu64(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_max_epu64(0b00001111, a, b);
        let e = _mm256_set_epi64x(3, 2, 2, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_max_epu64() {
        let a = _mm_set_epi64x(2, 3);
        let b = _mm_set_epi64x(3, 2);
        let r = _mm_max_epu64(a, b);
        let e = _mm_set_epi64x(3, 3);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_max_epu64() {
        let a = _mm_set_epi64x(2, 3);
        let b = _mm_set_epi64x(3, 2);
        let r = _mm_mask_max_epu64(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_max_epu64(a, 0b00000011, a, b);
        let e = _mm_set_epi64x(3, 3);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_max_epu64() {
        let a = _mm_set_epi64x(2, 3);
        let b = _mm_set_epi64x(3, 2);
        let r = _mm_maskz_max_epu64(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_max_epu64(0b00000011, a, b);
        let e = _mm_set_epi64x(3, 3);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_min_epi64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let b = _mm512_setr_epi64(7, 6, 5, 4, 3, 2, 1, 0);
        let r = _mm512_min_epi64(a, b);
        let e = _mm512_setr_epi64(0, 1, 2, 3, 3, 2, 1, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_min_epi64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let b = _mm512_setr_epi64(7, 6, 5, 4, 3, 2, 1, 0);
        let r = _mm512_mask_min_epi64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_min_epi64(a, 0b00001111, a, b);
        let e = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_min_epi64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let b = _mm512_setr_epi64(7, 6, 5, 4, 3, 2, 1, 0);
        let r = _mm512_maskz_min_epi64(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_min_epi64(0b00001111, a, b);
        let e = _mm512_setr_epi64(0, 1, 2, 3, 0, 0, 0, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_min_epi64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let b = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_min_epi64(a, b);
        let e = _mm256_set_epi64x(0, 1, 1, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_min_epi64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let b = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_mask_min_epi64(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_min_epi64(a, 0b00001111, a, b);
        let e = _mm256_set_epi64x(0, 1, 1, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_min_epi64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let b = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_maskz_min_epi64(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_min_epi64(0b00001111, a, b);
        let e = _mm256_set_epi64x(0, 1, 1, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_min_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_setr_pd(7., 6., 5., 4., 3., 2., 1., 0.);
        let r = _mm512_min_pd(a, b);
        let e = _mm512_setr_pd(0., 1., 2., 3., 3., 2., 1., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_min_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_setr_pd(7., 6., 5., 4., 3., 2., 1., 0.);
        let r = _mm512_mask_min_pd(a, 0, a, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_min_pd(a, 0b00001111, a, b);
        let e = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_min_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_setr_pd(7., 6., 5., 4., 3., 2., 1., 0.);
        let r = _mm512_maskz_min_pd(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_min_pd(0b00001111, a, b);
        let e = _mm512_setr_pd(0., 1., 2., 3., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_min_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let b = _mm256_set_pd(3., 2., 1., 0.);
        let r = _mm256_mask_min_pd(a, 0, a, b);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_min_pd(a, 0b00001111, a, b);
        let e = _mm256_set_pd(0., 1., 1., 0.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_min_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let b = _mm256_set_pd(3., 2., 1., 0.);
        let r = _mm256_maskz_min_pd(0, a, b);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_min_pd(0b00001111, a, b);
        let e = _mm256_set_pd(0., 1., 1., 0.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_min_pd() {
        let a = _mm_set_pd(0., 1.);
        let b = _mm_set_pd(1., 0.);
        let r = _mm_mask_min_pd(a, 0, a, b);
        assert_eq_m128d(r, a);
        let r = _mm_mask_min_pd(a, 0b00000011, a, b);
        let e = _mm_set_pd(0., 0.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_min_pd() {
        let a = _mm_set_pd(0., 1.);
        let b = _mm_set_pd(1., 0.);
        let r = _mm_maskz_min_pd(0, a, b);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_min_pd(0b00000011, a, b);
        let e = _mm_set_pd(0., 0.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_min_epu64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let b = _mm512_setr_epi64(7, 6, 5, 4, 3, 2, 1, 0);
        let r = _mm512_min_epu64(a, b);
        let e = _mm512_setr_epi64(0, 1, 2, 3, 3, 2, 1, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_min_epu64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let b = _mm512_setr_epi64(7, 6, 5, 4, 3, 2, 1, 0);
        let r = _mm512_mask_min_epu64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_min_epu64(a, 0b00001111, a, b);
        let e = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_min_epu64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let b = _mm512_setr_epi64(7, 6, 5, 4, 3, 2, 1, 0);
        let r = _mm512_maskz_min_epu64(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_min_epu64(0b00001111, a, b);
        let e = _mm512_setr_epi64(0, 1, 2, 3, 0, 0, 0, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_min_epu64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let b = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_min_epu64(a, b);
        let e = _mm256_set_epi64x(0, 1, 1, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_min_epu64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let b = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_mask_min_epu64(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_min_epu64(a, 0b00001111, a, b);
        let e = _mm256_set_epi64x(0, 1, 1, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_min_epu64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let b = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_maskz_min_epu64(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_min_epu64(0b00001111, a, b);
        let e = _mm256_set_epi64x(0, 1, 1, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_min_epu64() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set_epi64x(1, 0);
        let r = _mm_min_epu64(a, b);
        let e = _mm_set_epi64x(0, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_min_epu64() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set_epi64x(1, 0);
        let r = _mm_mask_min_epu64(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_min_epu64(a, 0b00000011, a, b);
        let e = _mm_set_epi64x(0, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_min_epu64() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set_epi64x(1, 0);
        let r = _mm_maskz_min_epu64(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_min_epu64(0b00000011, a, b);
        let e = _mm_set_epi64x(0, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_sqrt_pd() {
        let a = _mm512_setr_pd(0., 1., 4., 9., 16., 25., 36., 49.);
        let r = _mm512_sqrt_pd(a);
        let e = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_sqrt_pd() {
        let a = _mm512_setr_pd(0., 1., 4., 9., 16., 25., 36., 49.);
        let r = _mm512_mask_sqrt_pd(a, 0, a);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_sqrt_pd(a, 0b00001111, a);
        let e = _mm512_setr_pd(0., 1., 2., 3., 16., 25., 36., 49.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_sqrt_pd() {
        let a = _mm512_setr_pd(0., 1., 4., 9., 16., 25., 36., 49.);
        let r = _mm512_maskz_sqrt_pd(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_sqrt_pd(0b00001111, a);
        let e = _mm512_setr_pd(0., 1., 2., 3., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_sqrt_pd() {
        let a = _mm256_set_pd(0., 1., 4., 9.);
        let r = _mm256_mask_sqrt_pd(a, 0, a);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_sqrt_pd(a, 0b00001111, a);
        let e = _mm256_set_pd(0., 1., 2., 3.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_sqrt_pd() {
        let a = _mm256_set_pd(0., 1., 4., 9.);
        let r = _mm256_maskz_sqrt_pd(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_sqrt_pd(0b00001111, a);
        let e = _mm256_set_pd(0., 1., 2., 3.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_sqrt_pd() {
        let a = _mm_set_pd(0., 1.);
        let r = _mm_mask_sqrt_pd(a, 0, a);
        assert_eq_m128d(r, a);
        let r = _mm_mask_sqrt_pd(a, 0b00000011, a);
        let e = _mm_set_pd(0., 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_sqrt_pd() {
        let a = _mm_set_pd(0., 1.);
        let r = _mm_maskz_sqrt_pd(0, a);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_sqrt_pd(0b00000011, a);
        let e = _mm_set_pd(0., 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_fmadd_pd() {
        let a = _mm512_setr_pd(1., 1., 1., 1., 1., 1., 1., 1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_setr_pd(1., 1., 1., 1., 1., 1., 1., 1.);
        let r = _mm512_fmadd_pd(a, b, c);
        let e = _mm512_setr_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_fmadd_pd() {
        let a = _mm512_setr_pd(1., 1., 1., 1., 1., 1., 1., 1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_setr_pd(1., 1., 1., 1., 1., 1., 1., 1.);
        let r = _mm512_mask_fmadd_pd(a, 0, b, c);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_fmadd_pd(a, 0b00001111, b, c);
        let e = _mm512_setr_pd(1., 2., 3., 4., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_fmadd_pd() {
        let a = _mm512_setr_pd(1., 1., 1., 1., 1., 1., 1., 1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_setr_pd(1., 1., 1., 1., 1., 1., 1., 1.);
        let r = _mm512_maskz_fmadd_pd(0, a, b, c);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_fmadd_pd(0b00001111, a, b, c);
        let e = _mm512_setr_pd(1., 2., 3., 4., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask3_fmadd_pd() {
        let a = _mm512_setr_pd(1., 1., 1., 1., 1., 1., 1., 1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_setr_pd(1., 1., 1., 1., 2., 2., 2., 2.);
        let r = _mm512_mask3_fmadd_pd(a, b, c, 0);
        assert_eq_m512d(r, c);
        let r = _mm512_mask3_fmadd_pd(a, b, c, 0b00001111);
        let e = _mm512_setr_pd(1., 2., 3., 4., 2., 2., 2., 2.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_fmadd_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_mask_fmadd_pd(a, 0, b, c);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_fmadd_pd(a, 0b00001111, b, c);
        let e = _mm256_set_pd(1., 2., 3., 4.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_fmadd_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_maskz_fmadd_pd(0, a, b, c);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_fmadd_pd(0b00001111, a, b, c);
        let e = _mm256_set_pd(1., 2., 3., 4.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask3_fmadd_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_mask3_fmadd_pd(a, b, c, 0);
        assert_eq_m256d(r, c);
        let r = _mm256_mask3_fmadd_pd(a, b, c, 0b00001111);
        let e = _mm256_set_pd(1., 2., 3., 4.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_fmadd_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_mask_fmadd_pd(a, 0, b, c);
        assert_eq_m128d(r, a);
        let r = _mm_mask_fmadd_pd(a, 0b00000011, b, c);
        let e = _mm_set_pd(1., 2.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_fmadd_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_maskz_fmadd_pd(0, a, b, c);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_fmadd_pd(0b00000011, a, b, c);
        let e = _mm_set_pd(1., 2.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask3_fmadd_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_mask3_fmadd_pd(a, b, c, 0);
        assert_eq_m128d(r, c);
        let r = _mm_mask3_fmadd_pd(a, b, c, 0b00000011);
        let e = _mm_set_pd(1., 2.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_fmsub_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_fmsub_pd(a, b, c);
        let e = _mm512_setr_pd(-1., 0., 1., 2., 3., 4., 5., 6.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_fmsub_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_mask_fmsub_pd(a, 0, b, c);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_fmsub_pd(a, 0b00001111, b, c);
        let e = _mm512_setr_pd(-1., 0., 1., 2., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_fmsub_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_maskz_fmsub_pd(0, a, b, c);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_fmsub_pd(0b00001111, a, b, c);
        let e = _mm512_setr_pd(-1., 0., 1., 2., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask3_fmsub_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_setr_pd(1., 1., 1., 1., 2., 2., 2., 2.);
        let r = _mm512_mask3_fmsub_pd(a, b, c, 0);
        assert_eq_m512d(r, c);
        let r = _mm512_mask3_fmsub_pd(a, b, c, 0b00001111);
        let e = _mm512_setr_pd(-1., 0., 1., 2., 2., 2., 2., 2.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_fmsub_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_mask_fmsub_pd(a, 0, b, c);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_fmsub_pd(a, 0b00001111, b, c);
        let e = _mm256_set_pd(-1., 0., 1., 2.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_fmsub_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_maskz_fmsub_pd(0, a, b, c);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_fmsub_pd(0b00001111, a, b, c);
        let e = _mm256_set_pd(-1., 0., 1., 2.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask3_fmsub_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_mask3_fmsub_pd(a, b, c, 0);
        assert_eq_m256d(r, c);
        let r = _mm256_mask3_fmsub_pd(a, b, c, 0b00001111);
        let e = _mm256_set_pd(-1., 0., 1., 2.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_fmsub_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_mask_fmsub_pd(a, 0, b, c);
        assert_eq_m128d(r, a);
        let r = _mm_mask_fmsub_pd(a, 0b00000011, b, c);
        let e = _mm_set_pd(-1., 0.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_fmsub_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_maskz_fmsub_pd(0, a, b, c);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_fmsub_pd(0b00000011, a, b, c);
        let e = _mm_set_pd(-1., 0.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask3_fmsub_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_mask3_fmsub_pd(a, b, c, 0);
        assert_eq_m128d(r, c);
        let r = _mm_mask3_fmsub_pd(a, b, c, 0b00000011);
        let e = _mm_set_pd(-1., 0.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_fmaddsub_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_fmaddsub_pd(a, b, c);
        let e = _mm512_setr_pd(-1., 2., 1., 4., 3., 6., 5., 8.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_fmaddsub_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_mask_fmaddsub_pd(a, 0, b, c);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_fmaddsub_pd(a, 0b00001111, b, c);
        let e = _mm512_setr_pd(-1., 2., 1., 4., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_fmaddsub_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_maskz_fmaddsub_pd(0, a, b, c);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_fmaddsub_pd(0b00001111, a, b, c);
        let e = _mm512_setr_pd(-1., 2., 1., 4., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask3_fmaddsub_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_setr_pd(1., 1., 1., 1., 2., 2., 2., 2.);
        let r = _mm512_mask3_fmaddsub_pd(a, b, c, 0);
        assert_eq_m512d(r, c);
        let r = _mm512_mask3_fmaddsub_pd(a, b, c, 0b00001111);
        let e = _mm512_setr_pd(-1., 2., 1., 4., 2., 2., 2., 2.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_fmaddsub_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_mask_fmaddsub_pd(a, 0, b, c);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_fmaddsub_pd(a, 0b00001111, b, c);
        let e = _mm256_set_pd(1., 0., 3., 2.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_fmaddsub_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_maskz_fmaddsub_pd(0, a, b, c);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_fmaddsub_pd(0b00001111, a, b, c);
        let e = _mm256_set_pd(1., 0., 3., 2.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask3_fmaddsub_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_mask3_fmaddsub_pd(a, b, c, 0);
        assert_eq_m256d(r, c);
        let r = _mm256_mask3_fmaddsub_pd(a, b, c, 0b00001111);
        let e = _mm256_set_pd(1., 0., 3., 2.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_fmaddsub_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_mask_fmaddsub_pd(a, 0, b, c);
        assert_eq_m128d(r, a);
        let r = _mm_mask_fmaddsub_pd(a, 0b00000011, b, c);
        let e = _mm_set_pd(1., 0.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_fmaddsub_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_maskz_fmaddsub_pd(0, a, b, c);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_fmaddsub_pd(0b00000011, a, b, c);
        let e = _mm_set_pd(1., 0.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask3_fmaddsub_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_mask3_fmaddsub_pd(a, b, c, 0);
        assert_eq_m128d(r, c);
        let r = _mm_mask3_fmaddsub_pd(a, b, c, 0b00000011);
        let e = _mm_set_pd(1., 0.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_fmsubadd_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_fmsubadd_pd(a, b, c);
        let e = _mm512_setr_pd(1., 0., 3., 2., 5., 4., 7., 6.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_fmsubadd_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_mask_fmsubadd_pd(a, 0, b, c);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_fmsubadd_pd(a, 0b00001111, b, c);
        let e = _mm512_setr_pd(1., 0., 3., 2., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_fmsubadd_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_maskz_fmsubadd_pd(0, a, b, c);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_fmsubadd_pd(0b00001111, a, b, c);
        let e = _mm512_setr_pd(1., 0., 3., 2., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask3_fmsubadd_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_setr_pd(1., 1., 1., 1., 2., 2., 2., 2.);
        let r = _mm512_mask3_fmsubadd_pd(a, b, c, 0);
        assert_eq_m512d(r, c);
        let r = _mm512_mask3_fmsubadd_pd(a, b, c, 0b00001111);
        let e = _mm512_setr_pd(1., 0., 3., 2., 2., 2., 2., 2.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_fmsubadd_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_mask_fmsubadd_pd(a, 0, b, c);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_fmsubadd_pd(a, 0b00001111, b, c);
        let e = _mm256_set_pd(-1., 2., 1., 4.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_fmsubadd_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_maskz_fmsubadd_pd(0, a, b, c);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_fmsubadd_pd(0b00001111, a, b, c);
        let e = _mm256_set_pd(-1., 2., 1., 4.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask3_fmsubadd_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_mask3_fmsubadd_pd(a, b, c, 0);
        assert_eq_m256d(r, c);
        let r = _mm256_mask3_fmsubadd_pd(a, b, c, 0b00001111);
        let e = _mm256_set_pd(-1., 2., 1., 4.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_fmsubadd_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_mask_fmsubadd_pd(a, 0, b, c);
        assert_eq_m128d(r, a);
        let r = _mm_mask_fmsubadd_pd(a, 0b00000011, b, c);
        let e = _mm_set_pd(-1., 2.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_fmsubadd_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_maskz_fmsubadd_pd(0, a, b, c);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_fmsubadd_pd(0b00000011, a, b, c);
        let e = _mm_set_pd(-1., 2.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask3_fmsubadd_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_mask3_fmsubadd_pd(a, b, c, 0);
        assert_eq_m128d(r, c);
        let r = _mm_mask3_fmsubadd_pd(a, b, c, 0b00000011);
        let e = _mm_set_pd(-1., 2.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_fnmadd_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_fnmadd_pd(a, b, c);
        let e = _mm512_setr_pd(1., 0., -1., -2., -3., -4., -5., -6.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_fnmadd_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_mask_fnmadd_pd(a, 0, b, c);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_fnmadd_pd(a, 0b00001111, b, c);
        let e = _mm512_setr_pd(1., 0., -1., -2., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_fnmadd_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_maskz_fnmadd_pd(0, a, b, c);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_fnmadd_pd(0b00001111, a, b, c);
        let e = _mm512_setr_pd(1., 0., -1., -2., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask3_fnmadd_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_setr_pd(1., 1., 1., 1., 2., 2., 2., 2.);
        let r = _mm512_mask3_fnmadd_pd(a, b, c, 0);
        assert_eq_m512d(r, c);
        let r = _mm512_mask3_fnmadd_pd(a, b, c, 0b00001111);
        let e = _mm512_setr_pd(1., 0., -1., -2., 2., 2., 2., 2.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_fnmadd_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_mask_fnmadd_pd(a, 0, b, c);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_fnmadd_pd(a, 0b00001111, b, c);
        let e = _mm256_set_pd(1., 0., -1., -2.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_fnmadd_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_maskz_fnmadd_pd(0, a, b, c);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_fnmadd_pd(0b00001111, a, b, c);
        let e = _mm256_set_pd(1., 0., -1., -2.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask3_fnmadd_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_mask3_fnmadd_pd(a, b, c, 0);
        assert_eq_m256d(r, c);
        let r = _mm256_mask3_fnmadd_pd(a, b, c, 0b00001111);
        let e = _mm256_set_pd(1., 0., -1., -2.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_fnmadd_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_mask_fnmadd_pd(a, 0, b, c);
        assert_eq_m128d(r, a);
        let r = _mm_mask_fnmadd_pd(a, 0b00000011, b, c);
        let e = _mm_set_pd(1., 0.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_fnmadd_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_maskz_fnmadd_pd(0, a, b, c);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_fnmadd_pd(0b00000011, a, b, c);
        let e = _mm_set_pd(1., 0.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask3_fnmadd_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_mask3_fnmadd_pd(a, b, c, 0);
        assert_eq_m128d(r, c);
        let r = _mm_mask3_fnmadd_pd(a, b, c, 0b00000011);
        let e = _mm_set_pd(1., 0.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_fnmsub_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_fnmsub_pd(a, b, c);
        let e = _mm512_setr_pd(-1., -2., -3., -4., -5., -6., -7., -8.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_fnmsub_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_mask_fnmsub_pd(a, 0, b, c);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_fnmsub_pd(a, 0b00001111, b, c);
        let e = _mm512_setr_pd(-1., -2., -3., -4., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_fnmsub_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_maskz_fnmsub_pd(0, a, b, c);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_fnmsub_pd(0b00001111, a, b, c);
        let e = _mm512_setr_pd(-1., -2., -3., -4., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask3_fnmsub_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let c = _mm512_setr_pd(1., 1., 1., 1., 2., 2., 2., 2.);
        let r = _mm512_mask3_fnmsub_pd(a, b, c, 0);
        assert_eq_m512d(r, c);
        let r = _mm512_mask3_fnmsub_pd(a, b, c, 0b00001111);
        let e = _mm512_setr_pd(-1., -2., -3., -4., 2., 2., 2., 2.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_fnmsub_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_mask_fnmsub_pd(a, 0, b, c);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_fnmsub_pd(a, 0b00001111, b, c);
        let e = _mm256_set_pd(-1., -2., -3., -4.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_fnmsub_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_maskz_fnmsub_pd(0, a, b, c);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_fnmsub_pd(0b00001111, a, b, c);
        let e = _mm256_set_pd(-1., -2., -3., -4.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask3_fnmsub_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set_pd(0., 1., 2., 3.);
        let c = _mm256_set1_pd(1.);
        let r = _mm256_mask3_fnmsub_pd(a, b, c, 0);
        assert_eq_m256d(r, c);
        let r = _mm256_mask3_fnmsub_pd(a, b, c, 0b00001111);
        let e = _mm256_set_pd(-1., -2., -3., -4.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_fnmsub_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_mask_fnmsub_pd(a, 0, b, c);
        assert_eq_m128d(r, a);
        let r = _mm_mask_fnmsub_pd(a, 0b00000011, b, c);
        let e = _mm_set_pd(-1., -2.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_fnmsub_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_maskz_fnmsub_pd(0, a, b, c);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_fnmsub_pd(0b00000011, a, b, c);
        let e = _mm_set_pd(-1., -2.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask3_fnmsub_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set_pd(0., 1.);
        let c = _mm_set1_pd(1.);
        let r = _mm_mask3_fnmsub_pd(a, b, c, 0);
        assert_eq_m128d(r, c);
        let r = _mm_mask3_fnmsub_pd(a, b, c, 0b00000011);
        let e = _mm_set_pd(-1., -2.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_rcp14_pd() {
        let a = _mm512_set1_pd(3.);
        let r = _mm512_rcp14_pd(a);
        let e = _mm512_set1_pd(0.3333320617675781);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_rcp14_pd() {
        let a = _mm512_set1_pd(3.);
        let r = _mm512_mask_rcp14_pd(a, 0, a);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_rcp14_pd(a, 0b11110000, a);
        #[rustfmt::skip]
        let e = _mm512_setr_pd(
            3., 3., 3., 3.,
            0.3333320617675781, 0.3333320617675781, 0.3333320617675781, 0.3333320617675781,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_rcp14_pd() {
        let a = _mm512_set1_pd(3.);
        let r = _mm512_maskz_rcp14_pd(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_rcp14_pd(0b11110000, a);
        #[rustfmt::skip]
        let e = _mm512_setr_pd(
            0., 0., 0., 0.,
            0.3333320617675781, 0.3333320617675781, 0.3333320617675781, 0.3333320617675781,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_rcp14_pd() {
        let a = _mm256_set1_pd(3.);
        let r = _mm256_rcp14_pd(a);
        let e = _mm256_set1_pd(0.3333320617675781);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_rcp14_pd() {
        let a = _mm256_set1_pd(3.);
        let r = _mm256_mask_rcp14_pd(a, 0, a);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_rcp14_pd(a, 0b00001111, a);
        let e = _mm256_set1_pd(0.3333320617675781);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_rcp14_pd() {
        let a = _mm256_set1_pd(3.);
        let r = _mm256_maskz_rcp14_pd(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_rcp14_pd(0b00001111, a);
        let e = _mm256_set1_pd(0.3333320617675781);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_rcp14_pd() {
        let a = _mm_set1_pd(3.);
        let r = _mm_rcp14_pd(a);
        let e = _mm_set1_pd(0.3333320617675781);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_rcp14_pd() {
        let a = _mm_set1_pd(3.);
        let r = _mm_mask_rcp14_pd(a, 0, a);
        assert_eq_m128d(r, a);
        let r = _mm_mask_rcp14_pd(a, 0b00000011, a);
        let e = _mm_set1_pd(0.3333320617675781);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_rcp14_pd() {
        let a = _mm_set1_pd(3.);
        let r = _mm_maskz_rcp14_pd(0, a);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_rcp14_pd(0b00000011, a);
        let e = _mm_set1_pd(0.3333320617675781);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_rsqrt14_pd() {
        let a = _mm512_set1_pd(3.);
        let r = _mm512_rsqrt14_pd(a);
        let e = _mm512_set1_pd(0.5773391723632813);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_rsqrt14_pd() {
        let a = _mm512_set1_pd(3.);
        let r = _mm512_mask_rsqrt14_pd(a, 0, a);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_rsqrt14_pd(a, 0b11110000, a);
        #[rustfmt::skip]
        let e = _mm512_setr_pd(
            3., 3., 3., 3.,
            0.5773391723632813, 0.5773391723632813, 0.5773391723632813, 0.5773391723632813,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_rsqrt14_pd() {
        let a = _mm512_set1_pd(3.);
        let r = _mm512_maskz_rsqrt14_pd(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_rsqrt14_pd(0b11110000, a);
        #[rustfmt::skip]
        let e = _mm512_setr_pd(
            0., 0., 0., 0.,
            0.5773391723632813, 0.5773391723632813, 0.5773391723632813, 0.5773391723632813,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_rsqrt14_pd() {
        let a = _mm256_set1_pd(3.);
        let r = _mm256_mask_rsqrt14_pd(a, 0, a);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_rsqrt14_pd(a, 0b00001111, a);
        let e = _mm256_set1_pd(0.5773391723632813);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_rsqrt14_pd() {
        let a = _mm256_set1_pd(3.);
        let r = _mm256_maskz_rsqrt14_pd(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_rsqrt14_pd(0b00001111, a);
        let e = _mm256_set1_pd(0.5773391723632813);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_rsqrt14_pd() {
        let a = _mm_set1_pd(3.);
        let r = _mm_mask_rsqrt14_pd(a, 0, a);
        assert_eq_m128d(r, a);
        let r = _mm_mask_rsqrt14_pd(a, 0b00000011, a);
        let e = _mm_set1_pd(0.5773391723632813);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_rsqrt14_pd() {
        let a = _mm_set1_pd(3.);
        let r = _mm_maskz_rsqrt14_pd(0, a);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_rsqrt14_pd(0b00000011, a);
        let e = _mm_set1_pd(0.5773391723632813);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_getexp_pd() {
        let a = _mm512_set1_pd(3.);
        let r = _mm512_getexp_pd(a);
        let e = _mm512_set1_pd(1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_getexp_pd() {
        let a = _mm512_set1_pd(3.);
        let r = _mm512_mask_getexp_pd(a, 0, a);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_getexp_pd(a, 0b11110000, a);
        let e = _mm512_setr_pd(3., 3., 3., 3., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_getexp_pd() {
        let a = _mm512_set1_pd(3.);
        let r = _mm512_maskz_getexp_pd(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_getexp_pd(0b11110000, a);
        let e = _mm512_setr_pd(0., 0., 0., 0., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_getexp_pd() {
        let a = _mm256_set1_pd(3.);
        let r = _mm256_getexp_pd(a);
        let e = _mm256_set1_pd(1.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_getexp_pd() {
        let a = _mm256_set1_pd(3.);
        let r = _mm256_mask_getexp_pd(a, 0, a);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_getexp_pd(a, 0b00001111, a);
        let e = _mm256_set1_pd(1.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_getexp_pd() {
        let a = _mm256_set1_pd(3.);
        let r = _mm256_maskz_getexp_pd(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_getexp_pd(0b00001111, a);
        let e = _mm256_set1_pd(1.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_getexp_pd() {
        let a = _mm_set1_pd(3.);
        let r = _mm_getexp_pd(a);
        let e = _mm_set1_pd(1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_getexp_pd() {
        let a = _mm_set1_pd(3.);
        let r = _mm_mask_getexp_pd(a, 0, a);
        assert_eq_m128d(r, a);
        let r = _mm_mask_getexp_pd(a, 0b00000011, a);
        let e = _mm_set1_pd(1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_getexp_pd() {
        let a = _mm_set1_pd(3.);
        let r = _mm_maskz_getexp_pd(0, a);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_getexp_pd(0b00000011, a);
        let e = _mm_set1_pd(1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_roundscale_pd() {
        let a = _mm512_set1_pd(1.1);
        let r = _mm512_roundscale_pd::<0b00_00_00_00>(a);
        let e = _mm512_set1_pd(1.0);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_roundscale_pd() {
        let a = _mm512_set1_pd(1.1);
        let r = _mm512_mask_roundscale_pd::<0b00_00_00_00>(a, 0, a);
        let e = _mm512_set1_pd(1.1);
        assert_eq_m512d(r, e);
        let r = _mm512_mask_roundscale_pd::<0b00_00_00_00>(a, 0b11111111, a);
        let e = _mm512_set1_pd(1.0);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_roundscale_pd() {
        let a = _mm512_set1_pd(1.1);
        let r = _mm512_maskz_roundscale_pd::<0b00_00_00_00>(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_roundscale_pd::<0b00_00_00_00>(0b11111111, a);
        let e = _mm512_set1_pd(1.0);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_roundscale_pd() {
        let a = _mm256_set1_pd(1.1);
        let r = _mm256_roundscale_pd::<0b00_00_00_00>(a);
        let e = _mm256_set1_pd(1.0);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_roundscale_pd() {
        let a = _mm256_set1_pd(1.1);
        let r = _mm256_mask_roundscale_pd::<0b00_00_00_00>(a, 0, a);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_roundscale_pd::<0b00_00_00_00>(a, 0b00001111, a);
        let e = _mm256_set1_pd(1.0);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_roundscale_pd() {
        let a = _mm256_set1_pd(1.1);
        let r = _mm256_maskz_roundscale_pd::<0b00_00_00_00>(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_roundscale_pd::<0b00_00_00_00>(0b00001111, a);
        let e = _mm256_set1_pd(1.0);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_roundscale_pd() {
        let a = _mm_set1_pd(1.1);
        let r = _mm_roundscale_pd::<0b00_00_00_00>(a);
        let e = _mm_set1_pd(1.0);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_roundscale_pd() {
        let a = _mm_set1_pd(1.1);
        let r = _mm_mask_roundscale_pd::<0b00_00_00_00>(a, 0, a);
        let e = _mm_set1_pd(1.1);
        assert_eq_m128d(r, e);
        let r = _mm_mask_roundscale_pd::<0b00_00_00_00>(a, 0b00000011, a);
        let e = _mm_set1_pd(1.0);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_roundscale_pd() {
        let a = _mm_set1_pd(1.1);
        let r = _mm_maskz_roundscale_pd::<0b00_00_00_00>(0, a);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_roundscale_pd::<0b00_00_00_00>(0b00000011, a);
        let e = _mm_set1_pd(1.0);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_scalef_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_set1_pd(3.);
        let r = _mm512_scalef_pd(a, b);
        let e = _mm512_set1_pd(8.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_scalef_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_set1_pd(3.);
        let r = _mm512_mask_scalef_pd(a, 0, a, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_scalef_pd(a, 0b11110000, a, b);
        let e = _mm512_set_pd(8., 8., 8., 8., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_scalef_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_set1_pd(3.);
        let r = _mm512_maskz_scalef_pd(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_scalef_pd(0b11110000, a, b);
        let e = _mm512_set_pd(8., 8., 8., 8., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_scalef_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set1_pd(3.);
        let r = _mm256_scalef_pd(a, b);
        let e = _mm256_set1_pd(8.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_scalef_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set1_pd(3.);
        let r = _mm256_mask_scalef_pd(a, 0, a, b);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_scalef_pd(a, 0b00001111, a, b);
        let e = _mm256_set1_pd(8.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_scalef_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set1_pd(3.);
        let r = _mm256_maskz_scalef_pd(0, a, b);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_scalef_pd(0b00001111, a, b);
        let e = _mm256_set1_pd(8.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_scalef_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set1_pd(3.);
        let r = _mm_scalef_pd(a, b);
        let e = _mm_set1_pd(8.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_scalef_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set1_pd(3.);
        let r = _mm_mask_scalef_pd(a, 0, a, b);
        assert_eq_m128d(r, a);
        let r = _mm_mask_scalef_pd(a, 0b00000011, a, b);
        let e = _mm_set1_pd(8.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_scalef_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set1_pd(3.);
        let r = _mm_maskz_scalef_pd(0, a, b);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_scalef_pd(0b00000011, a, b);
        let e = _mm_set1_pd(8.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_fixupimm_pd() {
        let a = _mm512_set1_pd(f64::NAN);
        let b = _mm512_set1_pd(f64::MAX);
        let c = _mm512_set1_epi64(i32::MAX as i64);
        let r = _mm512_fixupimm_pd::<5>(a, b, c);
        let e = _mm512_set1_pd(0.0);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_fixupimm_pd() {
        let a = _mm512_set_pd(f64::NAN, f64::NAN, f64::NAN, f64::NAN, 1., 1., 1., 1.);
        let b = _mm512_set1_pd(f64::MAX);
        let c = _mm512_set1_epi64(i32::MAX as i64);
        let r = _mm512_mask_fixupimm_pd::<5>(a, 0b11110000, b, c);
        let e = _mm512_set_pd(0., 0., 0., 0., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_fixupimm_pd() {
        let a = _mm512_set_pd(f64::NAN, f64::NAN, f64::NAN, f64::NAN, 1., 1., 1., 1.);
        let b = _mm512_set1_pd(f64::MAX);
        let c = _mm512_set1_epi64(i32::MAX as i64);
        let r = _mm512_maskz_fixupimm_pd::<5>(0b11110000, a, b, c);
        let e = _mm512_set_pd(0., 0., 0., 0., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_fixupimm_pd() {
        let a = _mm256_set1_pd(f64::NAN);
        let b = _mm256_set1_pd(f64::MAX);
        let c = _mm256_set1_epi64x(i32::MAX as i64);
        let r = _mm256_fixupimm_pd::<5>(a, b, c);
        let e = _mm256_set1_pd(0.0);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_fixupimm_pd() {
        let a = _mm256_set1_pd(f64::NAN);
        let b = _mm256_set1_pd(f64::MAX);
        let c = _mm256_set1_epi64x(i32::MAX as i64);
        let r = _mm256_mask_fixupimm_pd::<5>(a, 0b00001111, b, c);
        let e = _mm256_set1_pd(0.0);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_fixupimm_pd() {
        let a = _mm256_set1_pd(f64::NAN);
        let b = _mm256_set1_pd(f64::MAX);
        let c = _mm256_set1_epi64x(i32::MAX as i64);
        let r = _mm256_maskz_fixupimm_pd::<5>(0b00001111, a, b, c);
        let e = _mm256_set1_pd(0.0);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_fixupimm_pd() {
        let a = _mm_set1_pd(f64::NAN);
        let b = _mm_set1_pd(f64::MAX);
        let c = _mm_set1_epi64x(i32::MAX as i64);
        let r = _mm_fixupimm_pd::<5>(a, b, c);
        let e = _mm_set1_pd(0.0);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_fixupimm_pd() {
        let a = _mm_set1_pd(f64::NAN);
        let b = _mm_set1_pd(f64::MAX);
        let c = _mm_set1_epi64x(i32::MAX as i64);
        let r = _mm_mask_fixupimm_pd::<5>(a, 0b00000011, b, c);
        let e = _mm_set1_pd(0.0);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_fixupimm_pd() {
        let a = _mm_set1_pd(f64::NAN);
        let b = _mm_set1_pd(f64::MAX);
        let c = _mm_set1_epi64x(i32::MAX as i64);
        let r = _mm_maskz_fixupimm_pd::<5>(0b00000011, a, b, c);
        let e = _mm_set1_pd(0.0);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_ternarylogic_epi64() {
        let a = _mm512_set1_epi64(1 << 2);
        let b = _mm512_set1_epi64(1 << 1);
        let c = _mm512_set1_epi64(1 << 0);
        let r = _mm512_ternarylogic_epi64::<8>(a, b, c);
        let e = _mm512_set1_epi64(0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_ternarylogic_epi64() {
        let src = _mm512_set1_epi64(1 << 2);
        let a = _mm512_set1_epi64(1 << 1);
        let b = _mm512_set1_epi64(1 << 0);
        let r = _mm512_mask_ternarylogic_epi64::<8>(src, 0, a, b);
        assert_eq_m512i(r, src);
        let r = _mm512_mask_ternarylogic_epi64::<8>(src, 0b11111111, a, b);
        let e = _mm512_set1_epi64(0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_ternarylogic_epi64() {
        let a = _mm512_set1_epi64(1 << 2);
        let b = _mm512_set1_epi64(1 << 1);
        let c = _mm512_set1_epi64(1 << 0);
        let r = _mm512_maskz_ternarylogic_epi64::<8>(0, a, b, c);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_ternarylogic_epi64::<8>(0b11111111, a, b, c);
        let e = _mm512_set1_epi64(0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_ternarylogic_epi64() {
        let a = _mm256_set1_epi64x(1 << 2);
        let b = _mm256_set1_epi64x(1 << 1);
        let c = _mm256_set1_epi64x(1 << 0);
        let r = _mm256_ternarylogic_epi64::<8>(a, b, c);
        let e = _mm256_set1_epi64x(0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_ternarylogic_epi64() {
        let src = _mm256_set1_epi64x(1 << 2);
        let a = _mm256_set1_epi64x(1 << 1);
        let b = _mm256_set1_epi64x(1 << 0);
        let r = _mm256_mask_ternarylogic_epi64::<8>(src, 0, a, b);
        assert_eq_m256i(r, src);
        let r = _mm256_mask_ternarylogic_epi64::<8>(src, 0b00001111, a, b);
        let e = _mm256_set1_epi64x(0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_ternarylogic_epi64() {
        let a = _mm256_set1_epi64x(1 << 2);
        let b = _mm256_set1_epi64x(1 << 1);
        let c = _mm256_set1_epi64x(1 << 0);
        let r = _mm256_maskz_ternarylogic_epi64::<9>(0, a, b, c);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_ternarylogic_epi64::<8>(0b00001111, a, b, c);
        let e = _mm256_set1_epi64x(0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_ternarylogic_epi64() {
        let a = _mm_set1_epi64x(1 << 2);
        let b = _mm_set1_epi64x(1 << 1);
        let c = _mm_set1_epi64x(1 << 0);
        let r = _mm_ternarylogic_epi64::<8>(a, b, c);
        let e = _mm_set1_epi64x(0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_ternarylogic_epi64() {
        let src = _mm_set1_epi64x(1 << 2);
        let a = _mm_set1_epi64x(1 << 1);
        let b = _mm_set1_epi64x(1 << 0);
        let r = _mm_mask_ternarylogic_epi64::<8>(src, 0, a, b);
        assert_eq_m128i(r, src);
        let r = _mm_mask_ternarylogic_epi64::<8>(src, 0b00000011, a, b);
        let e = _mm_set1_epi64x(0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_ternarylogic_epi64() {
        let a = _mm_set1_epi64x(1 << 2);
        let b = _mm_set1_epi64x(1 << 1);
        let c = _mm_set1_epi64x(1 << 0);
        let r = _mm_maskz_ternarylogic_epi64::<9>(0, a, b, c);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_ternarylogic_epi64::<8>(0b00000011, a, b, c);
        let e = _mm_set1_epi64x(0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_getmant_pd() {
        let a = _mm512_set1_pd(10.);
        let r = _mm512_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(a);
        let e = _mm512_set1_pd(1.25);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_getmant_pd() {
        let a = _mm512_set1_pd(10.);
        let r = _mm512_mask_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(a, 0, a);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(a, 0b11110000, a);
        let e = _mm512_setr_pd(10., 10., 10., 10., 1.25, 1.25, 1.25, 1.25);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_getmant_pd() {
        let a = _mm512_set1_pd(10.);
        let r = _mm512_maskz_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(0b11110000, a);
        let e = _mm512_setr_pd(0., 0., 0., 0., 1.25, 1.25, 1.25, 1.25);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_getmant_pd() {
        let a = _mm256_set1_pd(10.);
        let r = _mm256_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(a);
        let e = _mm256_set1_pd(1.25);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_getmant_pd() {
        let a = _mm256_set1_pd(10.);
        let r = _mm256_mask_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(a, 0, a);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(a, 0b00001111, a);
        let e = _mm256_set1_pd(1.25);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_getmant_pd() {
        let a = _mm256_set1_pd(10.);
        let r = _mm256_maskz_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(0b00001111, a);
        let e = _mm256_set1_pd(1.25);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_getmant_pd() {
        let a = _mm_set1_pd(10.);
        let r = _mm_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(a);
        let e = _mm_set1_pd(1.25);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_getmant_pd() {
        let a = _mm_set1_pd(10.);
        let r = _mm_mask_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(a, 0, a);
        assert_eq_m128d(r, a);
        let r = _mm_mask_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(a, 0b00000011, a);
        let e = _mm_set1_pd(1.25);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_getmant_pd() {
        let a = _mm_set1_pd(10.);
        let r = _mm_maskz_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(0, a);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_getmant_pd::<_MM_MANT_NORM_1_2, _MM_MANT_SIGN_SRC>(0b00000011, a);
        let e = _mm_set1_pd(1.25);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtps_pd() {
        let a = _mm256_setr_ps(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_cvtps_pd(a);
        let e = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtps_pd() {
        let a = _mm256_setr_ps(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let src = _mm512_set1_pd(0.);
        let r = _mm512_mask_cvtps_pd(src, 0, a);
        assert_eq_m512d(r, src);
        let r = _mm512_mask_cvtps_pd(src, 0b00001111, a);
        let e = _mm512_setr_pd(0., -1.5, 2., -3.5, 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtps_pd() {
        let a = _mm256_setr_ps(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_maskz_cvtps_pd(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_cvtps_pd(0b00001111, a);
        let e = _mm512_setr_pd(0., -1.5, 2., -3.5, 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtpslo_pd() {
        let v2 = _mm512_setr_ps(
            0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5, 100., 100., 100., 100., 100., 100., 100., 100.,
        );
        let r = _mm512_cvtpslo_pd(v2);
        let e = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtpslo_pd() {
        let v2 = _mm512_setr_ps(
            0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5, 100., 100., 100., 100., 100., 100., 100., 100.,
        );
        let src = _mm512_set1_pd(0.);
        let r = _mm512_mask_cvtpslo_pd(src, 0, v2);
        assert_eq_m512d(r, src);
        let r = _mm512_mask_cvtpslo_pd(src, 0b00001111, v2);
        let e = _mm512_setr_pd(0., -1.5, 2., -3.5, 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtpd_ps() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_cvtpd_ps(a);
        let e = _mm256_setr_ps(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        assert_eq_m256(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtpd_ps() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let src = _mm256_set1_ps(0.);
        let r = _mm512_mask_cvtpd_ps(src, 0, a);
        assert_eq_m256(r, src);
        let r = _mm512_mask_cvtpd_ps(src, 0b00001111, a);
        let e = _mm256_setr_ps(0., -1.5, 2., -3.5, 0., 0., 0., 0.);
        assert_eq_m256(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtpd_ps() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_maskz_cvtpd_ps(0, a);
        assert_eq_m256(r, _mm256_setzero_ps());
        let r = _mm512_maskz_cvtpd_ps(0b00001111, a);
        let e = _mm256_setr_ps(0., -1.5, 2., -3.5, 0., 0., 0., 0.);
        assert_eq_m256(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtpd_ps() {
        let a = _mm256_set_pd(4., -5.5, 6., -7.5);
        let src = _mm_set1_ps(0.);
        let r = _mm256_mask_cvtpd_ps(src, 0, a);
        assert_eq_m128(r, src);
        let r = _mm256_mask_cvtpd_ps(src, 0b00001111, a);
        let e = _mm_set_ps(4., -5.5, 6., -7.5);
        assert_eq_m128(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtpd_ps() {
        let a = _mm256_set_pd(4., -5.5, 6., -7.5);
        let r = _mm256_maskz_cvtpd_ps(0, a);
        assert_eq_m128(r, _mm_setzero_ps());
        let r = _mm256_maskz_cvtpd_ps(0b00001111, a);
        let e = _mm_set_ps(4., -5.5, 6., -7.5);
        assert_eq_m128(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtpd_ps() {
        let a = _mm_set_pd(6., -7.5);
        let src = _mm_set1_ps(0.);
        let r = _mm_mask_cvtpd_ps(src, 0, a);
        assert_eq_m128(r, src);
        let r = _mm_mask_cvtpd_ps(src, 0b00000011, a);
        let e = _mm_set_ps(0., 0., 6., -7.5);
        assert_eq_m128(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtpd_ps() {
        let a = _mm_set_pd(6., -7.5);
        let r = _mm_maskz_cvtpd_ps(0, a);
        assert_eq_m128(r, _mm_setzero_ps());
        let r = _mm_maskz_cvtpd_ps(0b00000011, a);
        let e = _mm_set_ps(0., 0., 6., -7.5);
        assert_eq_m128(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtpd_epi32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_cvtpd_epi32(a);
        let e = _mm256_setr_epi32(0, -2, 2, -4, 4, -6, 6, -8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtpd_epi32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let src = _mm256_set1_epi32(0);
        let r = _mm512_mask_cvtpd_epi32(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm512_mask_cvtpd_epi32(src, 0b11111111, a);
        let e = _mm256_setr_epi32(0, -2, 2, -4, 4, -6, 6, -8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtpd_epi32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_maskz_cvtpd_epi32(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm512_maskz_cvtpd_epi32(0b11111111, a);
        let e = _mm256_setr_epi32(0, -2, 2, -4, 4, -6, 6, -8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtpd_epi32() {
        let a = _mm256_set_pd(4., -5.5, 6., -7.5);
        let src = _mm_set1_epi32(0);
        let r = _mm256_mask_cvtpd_epi32(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm256_mask_cvtpd_epi32(src, 0b00001111, a);
        let e = _mm_set_epi32(4, -6, 6, -8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtpd_epi32() {
        let a = _mm256_set_pd(4., -5.5, 6., -7.5);
        let r = _mm256_maskz_cvtpd_epi32(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm256_maskz_cvtpd_epi32(0b00001111, a);
        let e = _mm_set_epi32(4, -6, 6, -8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtpd_epi32() {
        let a = _mm_set_pd(6., -7.5);
        let src = _mm_set1_epi32(0);
        let r = _mm_mask_cvtpd_epi32(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtpd_epi32(src, 0b00000011, a);
        let e = _mm_set_epi32(0, 0, 6, -8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtpd_epi32() {
        let a = _mm_set_pd(6., -7.5);
        let r = _mm_maskz_cvtpd_epi32(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtpd_epi32(0b00000011, a);
        let e = _mm_set_epi32(0, 0, 6, -8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtpd_epu32() {
        let a = _mm512_setr_pd(0., 1.5, 2., 3.5, 4., 5.5, 6., 7.5);
        let r = _mm512_cvtpd_epu32(a);
        let e = _mm256_setr_epi32(0, 2, 2, 4, 4, 6, 6, 8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtpd_epu32() {
        let a = _mm512_setr_pd(0., 1.5, 2., 3.5, 4., 5.5, 6., 7.5);
        let src = _mm256_set1_epi32(0);
        let r = _mm512_mask_cvtpd_epu32(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm512_mask_cvtpd_epu32(src, 0b11111111, a);
        let e = _mm256_setr_epi32(0, 2, 2, 4, 4, 6, 6, 8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtpd_epu32() {
        let a = _mm512_setr_pd(0., 1.5, 2., 3.5, 4., 5.5, 6., 7.5);
        let r = _mm512_maskz_cvtpd_epu32(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm512_maskz_cvtpd_epu32(0b11111111, a);
        let e = _mm256_setr_epi32(0, 2, 2, 4, 4, 6, 6, 8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cvtpd_epu32() {
        let a = _mm256_set_pd(4., 5.5, 6., 7.5);
        let r = _mm256_cvtpd_epu32(a);
        let e = _mm_set_epi32(4, 6, 6, 8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtpd_epu32() {
        let a = _mm256_set_pd(4., 5.5, 6., 7.5);
        let src = _mm_set1_epi32(0);
        let r = _mm256_mask_cvtpd_epu32(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm256_mask_cvtpd_epu32(src, 0b00001111, a);
        let e = _mm_set_epi32(4, 6, 6, 8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtpd_epu32() {
        let a = _mm256_set_pd(4., 5.5, 6., 7.5);
        let r = _mm256_maskz_cvtpd_epu32(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm256_maskz_cvtpd_epu32(0b00001111, a);
        let e = _mm_set_epi32(4, 6, 6, 8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cvtpd_epu32() {
        let a = _mm_set_pd(6., 7.5);
        let r = _mm_cvtpd_epu32(a);
        let e = _mm_set_epi32(0, 0, 6, 8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtpd_epu32() {
        let a = _mm_set_pd(6., 7.5);
        let src = _mm_set1_epi32(0);
        let r = _mm_mask_cvtpd_epu32(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtpd_epu32(src, 0b00000011, a);
        let e = _mm_set_epi32(0, 0, 6, 8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtpd_epu32() {
        let a = _mm_set_pd(6., 7.5);
        let r = _mm_maskz_cvtpd_epu32(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtpd_epu32(0b00000011, a);
        let e = _mm_set_epi32(0, 0, 6, 8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtpd_pslo() {
        let v2 = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_cvtpd_pslo(v2);
        let e = _mm512_setr_ps(
            0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5, 0., 0., 0., 0., 0., 0., 0., 0.,
        );
        assert_eq_m512(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtpd_pslo() {
        let v2 = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let src = _mm512_set1_ps(0.);
        let r = _mm512_mask_cvtpd_pslo(src, 0, v2);
        assert_eq_m512(r, src);
        let r = _mm512_mask_cvtpd_pslo(src, 0b00001111, v2);
        let e = _mm512_setr_ps(
            0., -1.5, 2., -3.5, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        );
        assert_eq_m512(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtepi8_epi64() {
        let a = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_cvtepi8_epi64(a);
        let e = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepi8_epi64() {
        let a = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm512_set1_epi64(-1);
        let r = _mm512_mask_cvtepi8_epi64(src, 0, a);
        assert_eq_m512i(r, src);
        let r = _mm512_mask_cvtepi8_epi64(src, 0b00001111, a);
        let e = _mm512_set_epi64(-1, -1, -1, -1, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtepi8_epi64() {
        let a = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_maskz_cvtepi8_epi64(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_cvtepi8_epi64(0b00001111, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtepi8_epi64() {
        let a = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm256_set1_epi64x(-1);
        let r = _mm256_mask_cvtepi8_epi64(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm256_mask_cvtepi8_epi64(src, 0b00001111, a);
        let e = _mm256_set_epi64x(12, 13, 14, 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtepi8_epi64() {
        let a = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm256_maskz_cvtepi8_epi64(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_cvtepi8_epi64(0b00001111, a);
        let e = _mm256_set_epi64x(12, 13, 14, 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtepi8_epi64() {
        let a = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm_set1_epi64x(-1);
        let r = _mm_mask_cvtepi8_epi64(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtepi8_epi64(src, 0b00000011, a);
        let e = _mm_set_epi64x(14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtepi8_epi64() {
        let a = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm_maskz_cvtepi8_epi64(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtepi8_epi64(0b00000011, a);
        let e = _mm_set_epi64x(14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtepu8_epi64() {
        let a = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_cvtepu8_epi64(a);
        let e = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepu8_epi64() {
        let a = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm512_set1_epi64(-1);
        let r = _mm512_mask_cvtepu8_epi64(src, 0, a);
        assert_eq_m512i(r, src);
        let r = _mm512_mask_cvtepu8_epi64(src, 0b00001111, a);
        let e = _mm512_set_epi64(-1, -1, -1, -1, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtepu8_epi64() {
        let a = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_maskz_cvtepu8_epi64(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_cvtepu8_epi64(0b00001111, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtepu8_epi64() {
        let a = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm256_set1_epi64x(-1);
        let r = _mm256_mask_cvtepu8_epi64(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm256_mask_cvtepu8_epi64(src, 0b00001111, a);
        let e = _mm256_set_epi64x(12, 13, 14, 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtepu8_epi64() {
        let a = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm256_maskz_cvtepu8_epi64(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_cvtepu8_epi64(0b00001111, a);
        let e = _mm256_set_epi64x(12, 13, 14, 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtepu8_epi64() {
        let a = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm_set1_epi64x(-1);
        let r = _mm_mask_cvtepu8_epi64(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtepu8_epi64(src, 0b00000011, a);
        let e = _mm_set_epi64x(14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtepu8_epi64() {
        let a = _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm_maskz_cvtepu8_epi64(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtepu8_epi64(0b00000011, a);
        let e = _mm_set_epi64x(14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtepi16_epi64() {
        let a = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_cvtepi16_epi64(a);
        let e = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepi16_epi64() {
        let a = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm512_set1_epi64(-1);
        let r = _mm512_mask_cvtepi16_epi64(src, 0, a);
        assert_eq_m512i(r, src);
        let r = _mm512_mask_cvtepi16_epi64(src, 0b00001111, a);
        let e = _mm512_set_epi64(-1, -1, -1, -1, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtepi16_epi64() {
        let a = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_maskz_cvtepi16_epi64(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_cvtepi16_epi64(0b00001111, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtepi16_epi64() {
        let a = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm256_set1_epi64x(-1);
        let r = _mm256_mask_cvtepi16_epi64(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm256_mask_cvtepi16_epi64(src, 0b00001111, a);
        let e = _mm256_set_epi64x(12, 13, 14, 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtepi16_epi64() {
        let a = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm256_maskz_cvtepi16_epi64(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_cvtepi16_epi64(0b00001111, a);
        let e = _mm256_set_epi64x(12, 13, 14, 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtepi16_epi64() {
        let a = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm_set1_epi64x(-1);
        let r = _mm_mask_cvtepi16_epi64(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtepi16_epi64(src, 0b00000011, a);
        let e = _mm_set_epi64x(14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtepi16_epi64() {
        let a = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm_maskz_cvtepi16_epi64(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtepi16_epi64(0b00000011, a);
        let e = _mm_set_epi64x(14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtepu16_epi64() {
        let a = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_cvtepu16_epi64(a);
        let e = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepu16_epi64() {
        let a = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm512_set1_epi64(-1);
        let r = _mm512_mask_cvtepu16_epi64(src, 0, a);
        assert_eq_m512i(r, src);
        let r = _mm512_mask_cvtepu16_epi64(src, 0b00001111, a);
        let e = _mm512_set_epi64(-1, -1, -1, -1, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtepu16_epi64() {
        let a = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_maskz_cvtepu16_epi64(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_cvtepu16_epi64(0b00001111, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtepu16_epi64() {
        let a = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm256_set1_epi64x(-1);
        let r = _mm256_mask_cvtepu16_epi64(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm256_mask_cvtepu16_epi64(src, 0b00001111, a);
        let e = _mm256_set_epi64x(12, 13, 14, 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtepu16_epi64() {
        let a = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm256_maskz_cvtepu16_epi64(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_cvtepu16_epi64(0b00001111, a);
        let e = _mm256_set_epi64x(12, 13, 14, 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtepu16_epi64() {
        let a = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm_set1_epi64x(-1);
        let r = _mm_mask_cvtepu16_epi64(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtepu16_epi64(src, 0b00000011, a);
        let e = _mm_set_epi64x(14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtepu16_epi64() {
        let a = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm_maskz_cvtepu16_epi64(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtepu16_epi64(0b00000011, a);
        let e = _mm_set_epi64x(14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtepi32_epi64() {
        let a = _mm256_set_epi32(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_cvtepi32_epi64(a);
        let e = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepi32_epi64() {
        let a = _mm256_set_epi32(8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm512_set1_epi64(-1);
        let r = _mm512_mask_cvtepi32_epi64(src, 0, a);
        assert_eq_m512i(r, src);
        let r = _mm512_mask_cvtepi32_epi64(src, 0b00001111, a);
        let e = _mm512_set_epi64(-1, -1, -1, -1, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtepi32_epi64() {
        let a = _mm256_set_epi32(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_maskz_cvtepi32_epi64(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_cvtepi32_epi64(0b00001111, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtepi32_epi64() {
        let a = _mm_set_epi32(8, 9, 10, 11);
        let src = _mm256_set1_epi64x(-1);
        let r = _mm256_mask_cvtepi32_epi64(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm256_mask_cvtepi32_epi64(src, 0b00001111, a);
        let e = _mm256_set_epi64x(8, 9, 10, 11);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtepi32_epi64() {
        let a = _mm_set_epi32(8, 9, 10, 11);
        let r = _mm256_maskz_cvtepi32_epi64(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_cvtepi32_epi64(0b00001111, a);
        let e = _mm256_set_epi64x(8, 9, 10, 11);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtepi32_epi64() {
        let a = _mm_set_epi32(8, 9, 10, 11);
        let src = _mm_set1_epi64x(0);
        let r = _mm_mask_cvtepi32_epi64(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtepi32_epi64(src, 0b00000011, a);
        let e = _mm_set_epi64x(10, 11);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtepi32_epi64() {
        let a = _mm_set_epi32(8, 9, 10, 11);
        let r = _mm_maskz_cvtepi32_epi64(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtepi32_epi64(0b00000011, a);
        let e = _mm_set_epi64x(10, 11);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtepu32_epi64() {
        let a = _mm256_set_epi32(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_cvtepu32_epi64(a);
        let e = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepu32_epi64() {
        let a = _mm256_set_epi32(8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm512_set1_epi64(-1);
        let r = _mm512_mask_cvtepu32_epi64(src, 0, a);
        assert_eq_m512i(r, src);
        let r = _mm512_mask_cvtepu32_epi64(src, 0b00001111, a);
        let e = _mm512_set_epi64(-1, -1, -1, -1, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtepu32_epi64() {
        let a = _mm256_set_epi32(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_maskz_cvtepu32_epi64(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_cvtepu32_epi64(0b00001111, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtepu32_epi64() {
        let a = _mm_set_epi32(12, 13, 14, 15);
        let src = _mm256_set1_epi64x(-1);
        let r = _mm256_mask_cvtepu32_epi64(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm256_mask_cvtepu32_epi64(src, 0b00001111, a);
        let e = _mm256_set_epi64x(12, 13, 14, 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtepu32_epi64() {
        let a = _mm_set_epi32(12, 13, 14, 15);
        let r = _mm256_maskz_cvtepu32_epi64(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_cvtepu32_epi64(0b00001111, a);
        let e = _mm256_set_epi64x(12, 13, 14, 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtepu32_epi64() {
        let a = _mm_set_epi32(12, 13, 14, 15);
        let src = _mm_set1_epi64x(-1);
        let r = _mm_mask_cvtepu32_epi64(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtepu32_epi64(src, 0b00000011, a);
        let e = _mm_set_epi64x(14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtepu32_epi64() {
        let a = _mm_set_epi32(12, 13, 14, 15);
        let r = _mm_maskz_cvtepu32_epi64(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtepu32_epi64(0b00000011, a);
        let e = _mm_set_epi64x(14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtepi32_pd() {
        let a = _mm256_set_epi32(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_cvtepi32_pd(a);
        let e = _mm512_set_pd(8., 9., 10., 11., 12., 13., 14., 15.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepi32_pd() {
        let a = _mm256_set_epi32(8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm512_set1_pd(-1.);
        let r = _mm512_mask_cvtepi32_pd(src, 0, a);
        assert_eq_m512d(r, src);
        let r = _mm512_mask_cvtepi32_pd(src, 0b00001111, a);
        let e = _mm512_set_pd(-1., -1., -1., -1., 12., 13., 14., 15.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtepi32_pd() {
        let a = _mm256_set_epi32(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_maskz_cvtepi32_pd(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_cvtepi32_pd(0b00001111, a);
        let e = _mm512_set_pd(0., 0., 0., 0., 12., 13., 14., 15.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtepi32_pd() {
        let a = _mm_set_epi32(12, 13, 14, 15);
        let src = _mm256_set1_pd(-1.);
        let r = _mm256_mask_cvtepi32_pd(src, 0, a);
        assert_eq_m256d(r, src);
        let r = _mm256_mask_cvtepi32_pd(src, 0b00001111, a);
        let e = _mm256_set_pd(12., 13., 14., 15.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtepi32_pd() {
        let a = _mm_set_epi32(12, 13, 14, 15);
        let r = _mm256_maskz_cvtepi32_pd(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_cvtepi32_pd(0b00001111, a);
        let e = _mm256_set_pd(12., 13., 14., 15.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtepi32_pd() {
        let a = _mm_set_epi32(12, 13, 14, 15);
        let src = _mm_set1_pd(-1.);
        let r = _mm_mask_cvtepi32_pd(src, 0, a);
        assert_eq_m128d(r, src);
        let r = _mm_mask_cvtepi32_pd(src, 0b00000011, a);
        let e = _mm_set_pd(14., 15.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtepi32_pd() {
        let a = _mm_set_epi32(12, 13, 14, 15);
        let r = _mm_maskz_cvtepi32_pd(0, a);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_cvtepi32_pd(0b00000011, a);
        let e = _mm_set_pd(14., 15.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtepu32_pd() {
        let a = _mm256_set_epi32(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_cvtepu32_pd(a);
        let e = _mm512_set_pd(8., 9., 10., 11., 12., 13., 14., 15.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepu32_pd() {
        let a = _mm256_set_epi32(8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm512_set1_pd(-1.);
        let r = _mm512_mask_cvtepu32_pd(src, 0, a);
        assert_eq_m512d(r, src);
        let r = _mm512_mask_cvtepu32_pd(src, 0b00001111, a);
        let e = _mm512_set_pd(-1., -1., -1., -1., 12., 13., 14., 15.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtepu32_pd() {
        let a = _mm256_set_epi32(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_maskz_cvtepu32_pd(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_cvtepu32_pd(0b00001111, a);
        let e = _mm512_set_pd(0., 0., 0., 0., 12., 13., 14., 15.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cvtepu32_pd() {
        let a = _mm_set_epi32(12, 13, 14, 15);
        let r = _mm256_cvtepu32_pd(a);
        let e = _mm256_set_pd(12., 13., 14., 15.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtepu32_pd() {
        let a = _mm_set_epi32(12, 13, 14, 15);
        let src = _mm256_set1_pd(-1.);
        let r = _mm256_mask_cvtepu32_pd(src, 0, a);
        assert_eq_m256d(r, src);
        let r = _mm256_mask_cvtepu32_pd(src, 0b00001111, a);
        let e = _mm256_set_pd(12., 13., 14., 15.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtepu32_pd() {
        let a = _mm_set_epi32(12, 13, 14, 15);
        let r = _mm256_maskz_cvtepu32_pd(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_cvtepu32_pd(0b00001111, a);
        let e = _mm256_set_pd(12., 13., 14., 15.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cvtepu32_pd() {
        let a = _mm_set_epi32(12, 13, 14, 15);
        let r = _mm_cvtepu32_pd(a);
        let e = _mm_set_pd(14., 15.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtepu32_pd() {
        let a = _mm_set_epi32(12, 13, 14, 15);
        let src = _mm_set1_pd(-1.);
        let r = _mm_mask_cvtepu32_pd(src, 0, a);
        assert_eq_m128d(r, src);
        let r = _mm_mask_cvtepu32_pd(src, 0b00000011, a);
        let e = _mm_set_pd(14., 15.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtepu32_pd() {
        let a = _mm_set_epi32(12, 13, 14, 15);
        let r = _mm_maskz_cvtepu32_pd(0, a);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_cvtepu32_pd(0b00000011, a);
        let e = _mm_set_pd(14., 15.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtepi32lo_pd() {
        let a = _mm512_set_epi32(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_cvtepi32lo_pd(a);
        let e = _mm512_set_pd(8., 9., 10., 11., 12., 13., 14., 15.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepi32lo_pd() {
        let a = _mm512_set_epi32(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm512_set1_pd(-1.);
        let r = _mm512_mask_cvtepi32lo_pd(src, 0, a);
        assert_eq_m512d(r, src);
        let r = _mm512_mask_cvtepi32lo_pd(src, 0b00001111, a);
        let e = _mm512_set_pd(-1., -1., -1., -1., 12., 13., 14., 15.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtepu32lo_pd() {
        let a = _mm512_set_epi32(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_cvtepu32lo_pd(a);
        let e = _mm512_set_pd(8., 9., 10., 11., 12., 13., 14., 15.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepu32lo_pd() {
        let a = _mm512_set_epi32(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm512_set1_pd(-1.);
        let r = _mm512_mask_cvtepu32lo_pd(src, 0, a);
        assert_eq_m512d(r, src);
        let r = _mm512_mask_cvtepu32lo_pd(src, 0b00001111, a);
        let e = _mm512_set_pd(-1., -1., -1., -1., 12., 13., 14., 15.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtepi64_epi32() {
        let a = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_cvtepi64_epi32(a);
        let e = _mm256_set_epi32(8, 9, 10, 11, 12, 13, 14, 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepi64_epi32() {
        let a = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm256_set1_epi32(-1);
        let r = _mm512_mask_cvtepi64_epi32(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm512_mask_cvtepi64_epi32(src, 0b00001111, a);
        let e = _mm256_set_epi32(-1, -1, -1, -1, 12, 13, 14, 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtepi64_epi32() {
        let a = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_maskz_cvtepi64_epi32(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm512_maskz_cvtepi64_epi32(0b00001111, a);
        let e = _mm256_set_epi32(0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cvtepi64_epi32() {
        let a = _mm256_set_epi64x(1, 2, 3, 4);
        let r = _mm256_cvtepi64_epi32(a);
        let e = _mm_set_epi32(1, 2, 3, 4);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtepi64_epi32() {
        let a = _mm256_set_epi64x(1, 2, 3, 4);
        let src = _mm_set1_epi32(0);
        let r = _mm256_mask_cvtepi64_epi32(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm256_mask_cvtepi64_epi32(src, 0b00001111, a);
        let e = _mm_set_epi32(1, 2, 3, 4);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtepi64_epi32() {
        let a = _mm256_set_epi64x(1, 2, 3, 4);
        let r = _mm256_maskz_cvtepi64_epi32(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm256_maskz_cvtepi64_epi32(0b00001111, a);
        let e = _mm_set_epi32(1, 2, 3, 4);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cvtepi64_epi32() {
        let a = _mm_set_epi64x(3, 4);
        let r = _mm_cvtepi64_epi32(a);
        let e = _mm_set_epi32(0, 0, 3, 4);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtepi64_epi32() {
        let a = _mm_set_epi64x(3, 4);
        let src = _mm_set1_epi32(0);
        let r = _mm_mask_cvtepi64_epi32(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtepi64_epi32(src, 0b00000011, a);
        let e = _mm_set_epi32(0, 0, 3, 4);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtepi64_epi32() {
        let a = _mm_set_epi64x(3, 4);
        let r = _mm_maskz_cvtepi64_epi32(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtepi64_epi32(0b00000011, a);
        let e = _mm_set_epi32(0, 0, 3, 4);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtepi64_epi16() {
        let a = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_cvtepi64_epi16(a);
        let e = _mm_set_epi16(8, 9, 10, 11, 12, 13, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepi64_epi16() {
        let a = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm_set1_epi16(-1);
        let r = _mm512_mask_cvtepi64_epi16(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm512_mask_cvtepi64_epi16(src, 0b00001111, a);
        let e = _mm_set_epi16(-1, -1, -1, -1, 12, 13, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtepi64_epi16() {
        let a = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_maskz_cvtepi64_epi16(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm512_maskz_cvtepi64_epi16(0b00001111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cvtepi64_epi16() {
        let a = _mm256_set_epi64x(12, 13, 14, 15);
        let r = _mm256_cvtepi64_epi16(a);
        let e = _mm_set_epi16(0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtepi64_epi16() {
        let a = _mm256_set_epi64x(12, 13, 14, 15);
        let src = _mm_set1_epi16(0);
        let r = _mm256_mask_cvtepi64_epi16(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm256_mask_cvtepi64_epi16(src, 0b11111111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtepi64_epi16() {
        let a = _mm256_set_epi64x(12, 13, 14, 15);
        let r = _mm256_maskz_cvtepi64_epi16(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm256_maskz_cvtepi64_epi16(0b11111111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cvtepi64_epi16() {
        let a = _mm_set_epi64x(14, 15);
        let r = _mm_cvtepi64_epi16(a);
        let e = _mm_set_epi16(0, 0, 0, 0, 0, 0, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtepi64_epi16() {
        let a = _mm_set_epi64x(14, 15);
        let src = _mm_set1_epi16(0);
        let r = _mm_mask_cvtepi64_epi16(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtepi64_epi16(src, 0b11111111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 0, 0, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtepi64_epi16() {
        let a = _mm_set_epi64x(14, 15);
        let r = _mm_maskz_cvtepi64_epi16(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtepi64_epi16(0b11111111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 0, 0, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtepi64_epi8() {
        let a = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_cvtepi64_epi8(a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepi64_epi8() {
        let a = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        let src = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1);
        let r = _mm512_mask_cvtepi64_epi8(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm512_mask_cvtepi64_epi8(src, 0b00001111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 12, 13, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtepi64_epi8() {
        let a = _mm512_set_epi64(8, 9, 10, 11, 12, 13, 14, 15);
        let r = _mm512_maskz_cvtepi64_epi8(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm512_maskz_cvtepi64_epi8(0b00001111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cvtepi64_epi8() {
        let a = _mm256_set_epi64x(12, 13, 14, 15);
        let r = _mm256_cvtepi64_epi8(a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtepi64_epi8() {
        let a = _mm256_set_epi64x(12, 13, 14, 15);
        let src = _mm_set1_epi8(0);
        let r = _mm256_mask_cvtepi64_epi8(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm256_mask_cvtepi64_epi8(src, 0b00001111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtepi64_epi8() {
        let a = _mm256_set_epi64x(12, 13, 14, 15);
        let r = _mm256_maskz_cvtepi64_epi8(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm256_maskz_cvtepi64_epi8(0b00001111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cvtepi64_epi8() {
        let a = _mm_set_epi64x(14, 15);
        let r = _mm_cvtepi64_epi8(a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtepi64_epi8() {
        let a = _mm_set_epi64x(14, 15);
        let src = _mm_set1_epi8(0);
        let r = _mm_mask_cvtepi64_epi8(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtepi64_epi8(src, 0b00000011, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtepi64_epi8() {
        let a = _mm_set_epi64x(14, 15);
        let r = _mm_maskz_cvtepi64_epi8(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtepi64_epi8(0b00000011, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtsepi64_epi32() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MAX);
        let r = _mm512_cvtsepi64_epi32(a);
        let e = _mm256_set_epi32(0, 1, 2, 3, 4, 5, i32::MIN, i32::MAX);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtsepi64_epi32() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MAX);
        let src = _mm256_set1_epi32(-1);
        let r = _mm512_mask_cvtsepi64_epi32(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm512_mask_cvtsepi64_epi32(src, 0b00001111, a);
        let e = _mm256_set_epi32(-1, -1, -1, -1, 4, 5, i32::MIN, i32::MAX);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtsepi64_epi32() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MAX);
        let r = _mm512_maskz_cvtsepi64_epi32(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm512_maskz_cvtsepi64_epi32(0b00001111, a);
        let e = _mm256_set_epi32(0, 0, 0, 0, 4, 5, i32::MIN, i32::MAX);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cvtsepi64_epi32() {
        let a = _mm256_set_epi64x(4, 5, i64::MIN, i64::MAX);
        let r = _mm256_cvtsepi64_epi32(a);
        let e = _mm_set_epi32(4, 5, i32::MIN, i32::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtsepi64_epi32() {
        let a = _mm256_set_epi64x(4, 5, i64::MIN, i64::MAX);
        let src = _mm_set1_epi32(-1);
        let r = _mm256_mask_cvtsepi64_epi32(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm256_mask_cvtsepi64_epi32(src, 0b00001111, a);
        let e = _mm_set_epi32(4, 5, i32::MIN, i32::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtsepi64_epi32() {
        let a = _mm256_set_epi64x(4, 5, i64::MIN, i64::MAX);
        let r = _mm256_maskz_cvtsepi64_epi32(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm256_maskz_cvtsepi64_epi32(0b00001111, a);
        let e = _mm_set_epi32(4, 5, i32::MIN, i32::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cvtsepi64_epi32() {
        let a = _mm_set_epi64x(i64::MIN, i64::MAX);
        let r = _mm_cvtsepi64_epi32(a);
        let e = _mm_set_epi32(0, 0, i32::MIN, i32::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtsepi64_epi32() {
        let a = _mm_set_epi64x(i64::MIN, i64::MAX);
        let src = _mm_set1_epi32(0);
        let r = _mm_mask_cvtsepi64_epi32(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtsepi64_epi32(src, 0b00000011, a);
        let e = _mm_set_epi32(0, 0, i32::MIN, i32::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtsepi64_epi32() {
        let a = _mm_set_epi64x(i64::MIN, i64::MAX);
        let r = _mm_maskz_cvtsepi64_epi32(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtsepi64_epi32(0b00000011, a);
        let e = _mm_set_epi32(0, 0, i32::MIN, i32::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtsepi64_epi16() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MAX);
        let r = _mm512_cvtsepi64_epi16(a);
        let e = _mm_set_epi16(0, 1, 2, 3, 4, 5, i16::MIN, i16::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtsepi64_epi16() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MAX);
        let src = _mm_set1_epi16(-1);
        let r = _mm512_mask_cvtsepi64_epi16(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm512_mask_cvtsepi64_epi16(src, 0b00001111, a);
        let e = _mm_set_epi16(-1, -1, -1, -1, 4, 5, i16::MIN, i16::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtsepi64_epi16() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MAX);
        let r = _mm512_maskz_cvtsepi64_epi16(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm512_maskz_cvtsepi64_epi16(0b00001111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 4, 5, i16::MIN, i16::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cvtsepi64_epi16() {
        let a = _mm256_set_epi64x(4, 5, i64::MIN, i64::MAX);
        let r = _mm256_cvtsepi64_epi16(a);
        let e = _mm_set_epi16(0, 0, 0, 0, 4, 5, i16::MIN, i16::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtsepi64_epi16() {
        let a = _mm256_set_epi64x(4, 5, i64::MIN, i64::MAX);
        let src = _mm_set1_epi16(0);
        let r = _mm256_mask_cvtsepi64_epi16(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm256_mask_cvtsepi64_epi16(src, 0b00001111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 4, 5, i16::MIN, i16::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtsepi64_epi16() {
        let a = _mm256_set_epi64x(4, 5, i64::MIN, i64::MAX);
        let r = _mm256_maskz_cvtsepi64_epi16(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm256_maskz_cvtsepi64_epi16(0b00001111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 4, 5, i16::MIN, i16::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cvtsepi64_epi16() {
        let a = _mm_set_epi64x(i64::MIN, i64::MAX);
        let r = _mm_cvtsepi64_epi16(a);
        let e = _mm_set_epi16(0, 0, 0, 0, 0, 0, i16::MIN, i16::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtsepi64_epi16() {
        let a = _mm_set_epi64x(i64::MIN, i64::MAX);
        let src = _mm_set1_epi16(0);
        let r = _mm_mask_cvtsepi64_epi16(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtsepi64_epi16(src, 0b00000011, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 0, 0, i16::MIN, i16::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtsepi64_epi16() {
        let a = _mm_set_epi64x(i64::MIN, i64::MAX);
        let r = _mm_maskz_cvtsepi64_epi16(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtsepi64_epi16(0b00000011, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 0, 0, i16::MIN, i16::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtsepi64_epi8() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MAX);
        let r = _mm512_cvtsepi64_epi8(a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, i8::MIN, i8::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtsepi64_epi8() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MAX);
        let src = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1);
        let r = _mm512_mask_cvtsepi64_epi8(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm512_mask_cvtsepi64_epi8(src, 0b00001111, a);
        #[rustfmt::skip]
        let e = _mm_set_epi8(
            0, 0, 0, 0,
            0, 0, 0, 0,
            -1, -1, -1, -1,
            4, 5, i8::MIN, i8::MAX,
        );
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtsepi64_epi8() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MAX);
        let r = _mm512_maskz_cvtsepi64_epi8(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm512_maskz_cvtsepi64_epi8(0b00001111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, i8::MIN, i8::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cvtsepi64_epi8() {
        let a = _mm256_set_epi64x(4, 5, i64::MIN, i64::MAX);
        let r = _mm256_cvtsepi64_epi8(a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, i8::MIN, i8::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtsepi64_epi8() {
        let a = _mm256_set_epi64x(4, 5, i64::MIN, i64::MAX);
        let src = _mm_set1_epi8(0);
        let r = _mm256_mask_cvtsepi64_epi8(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm256_mask_cvtsepi64_epi8(src, 0b00001111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, i8::MIN, i8::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtsepi64_epi8() {
        let a = _mm256_set_epi64x(4, 5, i64::MIN, i64::MAX);
        let r = _mm256_maskz_cvtsepi64_epi8(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm256_maskz_cvtsepi64_epi8(0b00001111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, i8::MIN, i8::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cvtsepi64_epi8() {
        let a = _mm_set_epi64x(i64::MIN, i64::MAX);
        let r = _mm_cvtsepi64_epi8(a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, i8::MIN, i8::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtsepi64_epi8() {
        let a = _mm_set_epi64x(i64::MIN, i64::MAX);
        let src = _mm_set1_epi8(0);
        let r = _mm_mask_cvtsepi64_epi8(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtsepi64_epi8(src, 0b00000011, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, i8::MIN, i8::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtsepi64_epi8() {
        let a = _mm_set_epi64x(i64::MIN, i64::MAX);
        let r = _mm_maskz_cvtsepi64_epi8(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtsepi64_epi8(0b00000011, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, i8::MIN, i8::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtusepi64_epi32() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MIN);
        let r = _mm512_cvtusepi64_epi32(a);
        let e = _mm256_set_epi32(0, 1, 2, 3, 4, 5, -1, -1);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtusepi64_epi32() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MIN);
        let src = _mm256_set1_epi32(-1);
        let r = _mm512_mask_cvtusepi64_epi32(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm512_mask_cvtusepi64_epi32(src, 0b00001111, a);
        let e = _mm256_set_epi32(-1, -1, -1, -1, 4, 5, -1, -1);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtusepi64_epi32() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MIN);
        let r = _mm512_maskz_cvtusepi64_epi32(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm512_maskz_cvtusepi64_epi32(0b00001111, a);
        let e = _mm256_set_epi32(0, 0, 0, 0, 4, 5, -1, -1);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cvtusepi64_epi32() {
        let a = _mm256_set_epi64x(4, 5, 6, i64::MAX);
        let r = _mm256_cvtusepi64_epi32(a);
        let e = _mm_set_epi32(4, 5, 6, u32::MAX as i32);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtusepi64_epi32() {
        let a = _mm256_set_epi64x(4, 5, 6, i64::MAX);
        let src = _mm_set1_epi32(0);
        let r = _mm256_mask_cvtusepi64_epi32(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm256_mask_cvtusepi64_epi32(src, 0b00001111, a);
        let e = _mm_set_epi32(4, 5, 6, u32::MAX as i32);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtusepi64_epi32() {
        let a = _mm256_set_epi64x(4, 5, 6, i64::MAX);
        let r = _mm256_maskz_cvtusepi64_epi32(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm256_maskz_cvtusepi64_epi32(0b00001111, a);
        let e = _mm_set_epi32(4, 5, 6, u32::MAX as i32);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cvtusepi64_epi32() {
        let a = _mm_set_epi64x(6, i64::MAX);
        let r = _mm_cvtusepi64_epi32(a);
        let e = _mm_set_epi32(0, 0, 6, u32::MAX as i32);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtusepi64_epi32() {
        let a = _mm_set_epi64x(6, i64::MAX);
        let src = _mm_set1_epi32(0);
        let r = _mm_mask_cvtusepi64_epi32(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtusepi64_epi32(src, 0b00000011, a);
        let e = _mm_set_epi32(0, 0, 6, u32::MAX as i32);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtusepi64_epi32() {
        let a = _mm_set_epi64x(6, i64::MAX);
        let r = _mm_maskz_cvtusepi64_epi32(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtusepi64_epi32(0b00000011, a);
        let e = _mm_set_epi32(0, 0, 6, u32::MAX as i32);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtusepi64_epi16() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MIN);
        let r = _mm512_cvtusepi64_epi16(a);
        let e = _mm_set_epi16(0, 1, 2, 3, 4, 5, -1, -1);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtusepi64_epi16() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MIN);
        let src = _mm_set1_epi16(-1);
        let r = _mm512_mask_cvtusepi64_epi16(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm512_mask_cvtusepi64_epi16(src, 0b00001111, a);
        let e = _mm_set_epi16(-1, -1, -1, -1, 4, 5, -1, -1);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtusepi64_epi16() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MIN);
        let r = _mm512_maskz_cvtusepi64_epi16(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm512_maskz_cvtusepi64_epi16(0b00001111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 4, 5, -1, -1);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cvtusepi64_epi16() {
        let a = _mm256_set_epi64x(4, 5, 6, i64::MAX);
        let r = _mm256_cvtusepi64_epi16(a);
        let e = _mm_set_epi16(0, 0, 0, 0, 4, 5, 6, u16::MAX as i16);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtusepi64_epi16() {
        let a = _mm256_set_epi64x(4, 5, 6, i64::MAX);
        let src = _mm_set1_epi16(0);
        let r = _mm256_mask_cvtusepi64_epi16(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm256_mask_cvtusepi64_epi16(src, 0b00001111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 4, 5, 6, u16::MAX as i16);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtusepi64_epi16() {
        let a = _mm256_set_epi64x(4, 5, 6, i64::MAX);
        let r = _mm256_maskz_cvtusepi64_epi16(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm256_maskz_cvtusepi64_epi16(0b00001111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 4, 5, 6, u16::MAX as i16);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cvtusepi64_epi16() {
        let a = _mm_set_epi64x(6, i64::MAX);
        let r = _mm_cvtusepi64_epi16(a);
        let e = _mm_set_epi16(0, 0, 0, 0, 0, 0, 6, u16::MAX as i16);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtusepi64_epi16() {
        let a = _mm_set_epi64x(6, i64::MAX);
        let src = _mm_set1_epi16(0);
        let r = _mm_mask_cvtusepi64_epi16(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtusepi64_epi16(src, 0b00000011, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 0, 0, 6, u16::MAX as i16);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtusepi64_epi16() {
        let a = _mm_set_epi64x(6, i64::MAX);
        let r = _mm_maskz_cvtusepi64_epi16(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtusepi64_epi16(0b00000011, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 0, 0, 6, u16::MAX as i16);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtusepi64_epi8() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MIN);
        let r = _mm512_cvtusepi64_epi8(a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, -1, -1);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtusepi64_epi8() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MIN);
        let src = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1);
        let r = _mm512_mask_cvtusepi64_epi8(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm512_mask_cvtusepi64_epi8(src, 0b00001111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 4, 5, -1, -1);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtusepi64_epi8() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, i64::MIN, i64::MIN);
        let r = _mm512_maskz_cvtusepi64_epi8(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm512_maskz_cvtusepi64_epi8(0b00001111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, -1, -1);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cvtusepi64_epi8() {
        let a = _mm256_set_epi64x(4, 5, 6, i64::MAX);
        let r = _mm256_cvtusepi64_epi8(a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, u8::MAX as i8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtusepi64_epi8() {
        let a = _mm256_set_epi64x(4, 5, 6, i64::MAX);
        let src = _mm_set1_epi8(0);
        let r = _mm256_mask_cvtusepi64_epi8(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm256_mask_cvtusepi64_epi8(src, 0b00001111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, u8::MAX as i8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvtusepi64_epi8() {
        let a = _mm256_set_epi64x(4, 5, 6, i64::MAX);
        let r = _mm256_maskz_cvtusepi64_epi8(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm256_maskz_cvtusepi64_epi8(0b00001111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, u8::MAX as i8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cvtusepi64_epi8() {
        let a = _mm_set_epi64x(6, i64::MAX);
        let r = _mm_cvtusepi64_epi8(a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, u8::MAX as i8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtusepi64_epi8() {
        let a = _mm_set_epi64x(6, i64::MAX);
        let src = _mm_set1_epi8(0);
        let r = _mm_mask_cvtusepi64_epi8(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvtusepi64_epi8(src, 0b00000011, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, u8::MAX as i8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvtusepi64_epi8() {
        let a = _mm_set_epi64x(6, i64::MAX);
        let r = _mm_maskz_cvtusepi64_epi8(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvtusepi64_epi8(0b00000011, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, u8::MAX as i8);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtt_roundpd_epi32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_cvtt_roundpd_epi32::<_MM_FROUND_NO_EXC>(a);
        let e = _mm256_setr_epi32(0, -1, 2, -3, 4, -5, 6, -7);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtt_roundpd_epi32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let src = _mm256_set1_epi32(0);
        let r = _mm512_mask_cvtt_roundpd_epi32::<_MM_FROUND_NO_EXC>(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm512_mask_cvtt_roundpd_epi32::<_MM_FROUND_NO_EXC>(src, 0b00001111, a);
        let e = _mm256_setr_epi32(0, -1, 2, -3, 0, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtt_roundpd_epi32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_maskz_cvtt_roundpd_epi32::<_MM_FROUND_NO_EXC>(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm512_maskz_cvtt_roundpd_epi32::<_MM_FROUND_NO_EXC>(0b00001111, a);
        let e = _mm256_setr_epi32(0, -1, 2, -3, 0, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvtt_roundpd_epu32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_cvtt_roundpd_epu32::<_MM_FROUND_NO_EXC>(a);
        let e = _mm256_setr_epi32(0, -1, 2, -1, 4, -1, 6, -1);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtt_roundpd_epu32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let src = _mm256_set1_epi32(0);
        let r = _mm512_mask_cvtt_roundpd_epu32::<_MM_FROUND_NO_EXC>(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm512_mask_cvtt_roundpd_epu32::<_MM_FROUND_NO_EXC>(src, 0b00001111, a);
        let e = _mm256_setr_epi32(0, -1, 2, -1, 0, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvtt_roundpd_epu32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_maskz_cvtt_roundpd_epu32::<_MM_FROUND_NO_EXC>(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm512_maskz_cvtt_roundpd_epu32::<_MM_FROUND_NO_EXC>(0b00001111, a);
        let e = _mm256_setr_epi32(0, -1, 2, -1, 0, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvttpd_epi32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_cvttpd_epi32(a);
        let e = _mm256_setr_epi32(0, -1, 2, -3, 4, -5, 6, -7);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvttpd_epi32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let src = _mm256_set1_epi32(0);
        let r = _mm512_mask_cvttpd_epi32(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm512_mask_cvttpd_epi32(src, 0b00001111, a);
        let e = _mm256_setr_epi32(0, -1, 2, -3, 0, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvttpd_epi32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_maskz_cvttpd_epi32(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm512_maskz_cvttpd_epi32(0b00001111, a);
        let e = _mm256_setr_epi32(0, -1, 2, -3, 0, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvttpd_epi32() {
        let a = _mm256_setr_pd(4., -5.5, 6., -7.5);
        let src = _mm_set1_epi32(0);
        let r = _mm256_mask_cvttpd_epi32(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm256_mask_cvttpd_epi32(src, 0b00001111, a);
        let e = _mm_setr_epi32(4, -5, 6, -7);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvttpd_epi32() {
        let a = _mm256_setr_pd(4., -5.5, 6., -7.5);
        let r = _mm256_maskz_cvttpd_epi32(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm256_maskz_cvttpd_epi32(0b00001111, a);
        let e = _mm_setr_epi32(4, -5, 6, -7);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvttpd_epi32() {
        let a = _mm_set_pd(6., -7.5);
        let src = _mm_set1_epi32(0);
        let r = _mm_mask_cvttpd_epi32(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvttpd_epi32(src, 0b00000011, a);
        let e = _mm_set_epi32(0, 0, 6, -7);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvttpd_epi32() {
        let a = _mm_set_pd(6., -7.5);
        let r = _mm_maskz_cvttpd_epi32(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvttpd_epi32(0b00000011, a);
        let e = _mm_set_epi32(0, 0, 6, -7);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvttpd_epu32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_cvttpd_epu32(a);
        let e = _mm256_setr_epi32(0, -1, 2, -1, 4, -1, 6, -1);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvttpd_epu32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let src = _mm256_set1_epi32(0);
        let r = _mm512_mask_cvttpd_epu32(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm512_mask_cvttpd_epu32(src, 0b00001111, a);
        let e = _mm256_setr_epi32(0, -1, 2, -1, 0, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvttpd_epu32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_maskz_cvttpd_epu32(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm512_maskz_cvttpd_epu32(0b00001111, a);
        let e = _mm256_setr_epi32(0, -1, 2, -1, 0, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cvttpd_epu32() {
        let a = _mm256_set_pd(4., 5.5, 6., 7.5);
        let r = _mm256_cvttpd_epu32(a);
        let e = _mm_set_epi32(4, 5, 6, 7);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvttpd_epu32() {
        let a = _mm256_set_pd(4., 5.5, 6., 7.5);
        let src = _mm_set1_epi32(0);
        let r = _mm256_mask_cvttpd_epu32(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm256_mask_cvttpd_epu32(src, 0b00001111, a);
        let e = _mm_set_epi32(4, 5, 6, 7);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_cvttpd_epu32() {
        let a = _mm256_set_pd(4., 5.5, 6., 7.5);
        let r = _mm256_maskz_cvttpd_epu32(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm256_maskz_cvttpd_epu32(0b00001111, a);
        let e = _mm_set_epi32(4, 5, 6, 7);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cvttpd_epu32() {
        let a = _mm_set_pd(6., 7.5);
        let r = _mm_cvttpd_epu32(a);
        let e = _mm_set_epi32(0, 0, 6, 7);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvttpd_epu32() {
        let a = _mm_set_pd(6., 7.5);
        let src = _mm_set1_epi32(0);
        let r = _mm_mask_cvttpd_epu32(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_cvttpd_epu32(src, 0b00000011, a);
        let e = _mm_set_epi32(0, 0, 6, 7);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_cvttpd_epu32() {
        let a = _mm_set_pd(6., 7.5);
        let r = _mm_maskz_cvttpd_epu32(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_cvttpd_epu32(0b00000011, a);
        let e = _mm_set_epi32(0, 0, 6, 7);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_add_round_pd() {
        let a = _mm512_setr_pd(8., 9.5, 10., 11.5, 12., 13.5, 14., 0.000000000000000007);
        let b = _mm512_set1_pd(-1.);
        let r = _mm512_add_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm512_setr_pd(7., 8.5, 9., 10.5, 11., 12.5, 13., -1.0);
        assert_eq_m512d(r, e);
        let r = _mm512_add_round_pd::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm512_setr_pd(7., 8.5, 9., 10.5, 11., 12.5, 13., -0.9999999999999999);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_add_round_pd() {
        let a = _mm512_setr_pd(8., 9.5, 10., 11.5, 12., 13.5, 14., 0.000000000000000007);
        let b = _mm512_set1_pd(-1.);
        let r = _mm512_mask_add_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0, a, b,
        );
        assert_eq_m512d(r, a);
        let r = _mm512_mask_add_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0b11110000, a, b,
        );
        let e = _mm512_setr_pd(8., 9.5, 10., 11.5, 11., 12.5, 13., -1.0);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_add_round_pd() {
        let a = _mm512_setr_pd(8., 9.5, 10., 11.5, 12., 13.5, 14., 0.000000000000000007);
        let b = _mm512_set1_pd(-1.);
        let r =
            _mm512_maskz_add_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_add_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0b11110000, a, b,
        );
        let e = _mm512_setr_pd(0., 0., 0., 0., 11., 12.5, 13., -1.0);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_sub_round_pd() {
        let a = _mm512_setr_pd(8., 9.5, 10., 11.5, 12., 13.5, 14., 0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let r = _mm512_sub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm512_setr_pd(7., 8.5, 9., 10.5, 11., 12.5, 13., -1.0);
        assert_eq_m512d(r, e);
        let r = _mm512_sub_round_pd::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm512_setr_pd(7., 8.5, 9., 10.5, 11., 12.5, 13., -0.9999999999999999);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_sub_round_pd() {
        let a = _mm512_setr_pd(8., 9.5, 10., 11.5, 12., 13.5, 14., 0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let r = _mm512_mask_sub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0, a, b,
        );
        assert_eq_m512d(r, a);
        let r = _mm512_mask_sub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0b11110000, a, b,
        );
        let e = _mm512_setr_pd(8., 9.5, 10., 11.5, 11., 12.5, 13., -1.0);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_sub_round_pd() {
        let a = _mm512_setr_pd(8., 9.5, 10., 11.5, 12., 13.5, 14., 0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let r =
            _mm512_maskz_sub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_sub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0b11110000, a, b,
        );
        let e = _mm512_setr_pd(0., 0., 0., 0., 11., 12.5, 13., -1.0);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mul_round_pd() {
        let a = _mm512_setr_pd(8., 9.5, 10., 11.5, 12., 13.5, 14., 0.);
        let b = _mm512_set1_pd(0.1);
        let r = _mm512_mul_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm512_setr_pd(
            0.8,
            0.9500000000000001,
            1.,
            1.1500000000000001,
            1.2000000000000002,
            1.35,
            1.4000000000000001,
            0.,
        );
        assert_eq_m512d(r, e);
        let r = _mm512_mul_round_pd::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm512_setr_pd(0.8, 0.95, 1.0, 1.15, 1.2, 1.3499999999999999, 1.4, 0.0);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_mul_round_pd() {
        let a = _mm512_setr_pd(8., 9.5, 10., 11.5, 12., 13.5, 14., 0.);
        let b = _mm512_set1_pd(0.1);
        let r = _mm512_mask_mul_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0, a, b,
        );
        assert_eq_m512d(r, a);
        let r = _mm512_mask_mul_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0b11110000, a, b,
        );
        let e = _mm512_setr_pd(
            8.,
            9.5,
            10.,
            11.5,
            1.2000000000000002,
            1.35,
            1.4000000000000001,
            0.,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_mul_round_pd() {
        let a = _mm512_setr_pd(8., 9.5, 10., 11.5, 12., 13.5, 14., 0.);
        let b = _mm512_set1_pd(0.1);
        let r =
            _mm512_maskz_mul_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_mul_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0b11110000, a, b,
        );
        let e = _mm512_setr_pd(
            0.,
            0.,
            0.,
            0.,
            1.2000000000000002,
            1.35,
            1.4000000000000001,
            0.,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_div_round_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_set1_pd(3.);
        let r = _mm512_div_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm512_set1_pd(0.3333333333333333);
        assert_eq_m512d(r, e);
        let r = _mm512_div_round_pd::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm512_set1_pd(0.3333333333333333);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_div_round_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_set1_pd(3.);
        let r = _mm512_mask_div_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0, a, b,
        );
        assert_eq_m512d(r, a);
        let r = _mm512_mask_div_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0b11110000, a, b,
        );
        let e = _mm512_setr_pd(
            1.,
            1.,
            1.,
            1.,
            0.3333333333333333,
            0.3333333333333333,
            0.3333333333333333,
            0.3333333333333333,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_div_round_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_set1_pd(3.);
        let r =
            _mm512_maskz_div_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_div_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0b11110000, a, b,
        );
        let e = _mm512_setr_pd(
            0.,
            0.,
            0.,
            0.,
            0.3333333333333333,
            0.3333333333333333,
            0.3333333333333333,
            0.3333333333333333,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_sqrt_round_pd() {
        let a = _mm512_set1_pd(3.);
        let r = _mm512_sqrt_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(a);
        let e = _mm512_set1_pd(1.7320508075688772);
        assert_eq_m512d(r, e);
        let r = _mm512_sqrt_round_pd::<{ _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC }>(a);
        let e = _mm512_set1_pd(1.7320508075688774);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_sqrt_round_pd() {
        let a = _mm512_set1_pd(3.);
        let r =
            _mm512_mask_sqrt_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(a, 0, a);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_sqrt_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0b11110000, a,
        );
        let e = _mm512_setr_pd(
            3.,
            3.,
            3.,
            3.,
            1.7320508075688772,
            1.7320508075688772,
            1.7320508075688772,
            1.7320508075688772,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_sqrt_round_pd() {
        let a = _mm512_set1_pd(3.);
        let r =
            _mm512_maskz_sqrt_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_sqrt_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0b11110000, a,
        );
        let e = _mm512_setr_pd(
            0.,
            0.,
            0.,
            0.,
            1.7320508075688772,
            1.7320508075688772,
            1.7320508075688772,
            1.7320508075688772,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_fmadd_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r = _mm512_fmadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(a, b, c);
        let e = _mm512_set1_pd(-1.);
        assert_eq_m512d(r, e);
        let r = _mm512_fmadd_round_pd::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b, c);
        let e = _mm512_set1_pd(-0.9999999999999999);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_fmadd_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r = _mm512_mask_fmadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0, b, c,
        );
        assert_eq_m512d(r, a);
        let r = _mm512_mask_fmadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0b00001111, b, c,
        );
        let e = _mm512_setr_pd(
            -1.,
            -1.,
            -1.,
            -1.,
            0.000000000000000007,
            0.000000000000000007,
            0.000000000000000007,
            0.000000000000000007,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_fmadd_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r = _mm512_maskz_fmadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0, a, b, c,
        );
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_fmadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0b00001111, a, b, c,
        );
        let e = _mm512_setr_pd(-1., -1., -1., -1., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask3_fmadd_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r = _mm512_mask3_fmadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, b, c, 0,
        );
        assert_eq_m512d(r, c);
        let r = _mm512_mask3_fmadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, b, c, 0b00001111,
        );
        let e = _mm512_setr_pd(-1., -1., -1., -1., -1., -1., -1., -1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_fmsub_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_fmsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(a, b, c);
        let e = _mm512_set1_pd(-1.);
        assert_eq_m512d(r, e);
        let r = _mm512_fmsub_round_pd::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b, c);
        let e = _mm512_set1_pd(-0.9999999999999999);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_fmsub_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_mask_fmsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0, b, c,
        );
        assert_eq_m512d(r, a);
        let r = _mm512_mask_fmsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0b00001111, b, c,
        );
        let e = _mm512_setr_pd(
            -1.,
            -1.,
            -1.,
            -1.,
            0.000000000000000007,
            0.000000000000000007,
            0.000000000000000007,
            0.000000000000000007,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_fmsub_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_maskz_fmsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0, a, b, c,
        );
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_fmsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0b00001111, a, b, c,
        );
        let e = _mm512_setr_pd(-1., -1., -1., -1., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask3_fmsub_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_mask3_fmsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, b, c, 0,
        );
        assert_eq_m512d(r, c);
        let r = _mm512_mask3_fmsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, b, c, 0b00001111,
        );
        let e = _mm512_setr_pd(-1., -1., -1., -1., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_fmaddsub_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r =
            _mm512_fmaddsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(a, b, c);
        let e = _mm512_setr_pd(1., -1., 1., -1., 1., -1., 1., -1.);
        assert_eq_m512d(r, e);
        let r = _mm512_fmaddsub_round_pd::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b, c);
        let e = _mm512_setr_pd(
            1.,
            -0.9999999999999999,
            1.,
            -0.9999999999999999,
            1.,
            -0.9999999999999999,
            1.,
            -0.9999999999999999,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_fmaddsub_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r = _mm512_mask_fmaddsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0, b, c,
        );
        assert_eq_m512d(r, a);
        let r = _mm512_mask_fmaddsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0b00001111, b, c,
        );
        let e = _mm512_setr_pd(
            1.,
            -1.,
            1.,
            -1.,
            0.000000000000000007,
            0.000000000000000007,
            0.000000000000000007,
            0.000000000000000007,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_fmaddsub_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r = _mm512_maskz_fmaddsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0, a, b, c,
        );
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_fmaddsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0b00001111, a, b, c,
        );
        let e = _mm512_setr_pd(1., -1., 1., -1., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask3_fmaddsub_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r = _mm512_mask3_fmaddsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, b, c, 0,
        );
        assert_eq_m512d(r, c);
        let r = _mm512_mask3_fmaddsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, b, c, 0b00001111,
        );
        let e = _mm512_setr_pd(1., -1., 1., -1., -1., -1., -1., -1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_fmsubadd_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r =
            _mm512_fmsubadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(a, b, c);
        let e = _mm512_setr_pd(-1., 1., -1., 1., -1., 1., -1., 1.);
        assert_eq_m512d(r, e);
        let r = _mm512_fmsubadd_round_pd::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b, c);
        let e = _mm512_setr_pd(
            -0.9999999999999999,
            1.,
            -0.9999999999999999,
            1.,
            -0.9999999999999999,
            1.,
            -0.9999999999999999,
            1.,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_fmsubadd_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r = _mm512_mask_fmsubadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0, b, c,
        );
        assert_eq_m512d(r, a);
        let r = _mm512_mask_fmsubadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0b00001111, b, c,
        );
        let e = _mm512_setr_pd(
            -1.,
            1.,
            -1.,
            1.,
            0.000000000000000007,
            0.000000000000000007,
            0.000000000000000007,
            0.000000000000000007,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_fmsubadd_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r = _mm512_maskz_fmsubadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0, a, b, c,
        );
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_fmsubadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0b00001111, a, b, c,
        );
        let e = _mm512_setr_pd(-1., 1., -1., 1., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask3_fmsubadd_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r = _mm512_mask3_fmsubadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, b, c, 0,
        );
        assert_eq_m512d(r, c);
        let r = _mm512_mask3_fmsubadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, b, c, 0b00001111,
        );
        let e = _mm512_setr_pd(-1., 1., -1., 1., -1., -1., -1., -1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_fnmadd_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(1.);
        let r =
            _mm512_fnmadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(a, b, c);
        let e = _mm512_set1_pd(1.);
        assert_eq_m512d(r, e);
        let r = _mm512_fnmadd_round_pd::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b, c);
        let e = _mm512_set1_pd(0.9999999999999999);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_fnmadd_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_mask_fnmadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0, b, c,
        );
        assert_eq_m512d(r, a);
        let r = _mm512_mask_fnmadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0b00001111, b, c,
        );
        let e = _mm512_setr_pd(
            1.,
            1.,
            1.,
            1.,
            0.000000000000000007,
            0.000000000000000007,
            0.000000000000000007,
            0.000000000000000007,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_fnmadd_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_maskz_fnmadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0, a, b, c,
        );
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_fnmadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0b00001111, a, b, c,
        );
        let e = _mm512_setr_pd(1., 1., 1., 1., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask3_fnmadd_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(1.);
        let r = _mm512_mask3_fnmadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, b, c, 0,
        );
        assert_eq_m512d(r, c);
        let r = _mm512_mask3_fnmadd_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, b, c, 0b00001111,
        );
        let e = _mm512_setr_pd(1., 1., 1., 1., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_fnmsub_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r =
            _mm512_fnmsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(a, b, c);
        let e = _mm512_set1_pd(1.);
        assert_eq_m512d(r, e);
        let r = _mm512_fnmsub_round_pd::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b, c);
        let e = _mm512_set1_pd(0.9999999999999999);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_fnmsub_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r = _mm512_mask_fnmsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0, b, c,
        );
        assert_eq_m512d(r, a);
        let r = _mm512_mask_fnmsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0b00001111, b, c,
        );
        let e = _mm512_setr_pd(
            1.,
            1.,
            1.,
            1.,
            0.000000000000000007,
            0.000000000000000007,
            0.000000000000000007,
            0.000000000000000007,
        );
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_fnmsub_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r = _mm512_maskz_fnmsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0, a, b, c,
        );
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_fnmsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0b00001111, a, b, c,
        );
        let e = _mm512_setr_pd(1., 1., 1., 1., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask3_fnmsub_round_pd() {
        let a = _mm512_set1_pd(0.000000000000000007);
        let b = _mm512_set1_pd(1.);
        let c = _mm512_set1_pd(-1.);
        let r = _mm512_mask3_fnmsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, b, c, 0,
        );
        assert_eq_m512d(r, c);
        let r = _mm512_mask3_fnmsub_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, b, c, 0b00001111,
        );
        let e = _mm512_setr_pd(1., 1., 1., 1., -1., -1., -1., -1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_max_round_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_setr_pd(7., 6., 5., 4., 3., 2., 1., 0.);
        let r = _mm512_max_round_pd::<_MM_FROUND_CUR_DIRECTION>(a, b);
        let e = _mm512_setr_pd(7., 6., 5., 4., 4., 5., 6., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_max_round_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_setr_pd(7., 6., 5., 4., 3., 2., 1., 0.);
        let r = _mm512_mask_max_round_pd::<_MM_FROUND_CUR_DIRECTION>(a, 0, a, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_max_round_pd::<_MM_FROUND_CUR_DIRECTION>(a, 0b00001111, a, b);
        let e = _mm512_setr_pd(7., 6., 5., 4., 4., 5., 6., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_max_round_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_setr_pd(7., 6., 5., 4., 3., 2., 1., 0.);
        let r = _mm512_maskz_max_round_pd::<_MM_FROUND_CUR_DIRECTION>(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_max_round_pd::<_MM_FROUND_CUR_DIRECTION>(0b00001111, a, b);
        let e = _mm512_setr_pd(7., 6., 5., 4., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_min_round_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_setr_pd(7., 6., 5., 4., 3., 2., 1., 0.);
        let r = _mm512_min_round_pd::<_MM_FROUND_CUR_DIRECTION>(a, b);
        let e = _mm512_setr_pd(0., 1., 2., 3., 3., 2., 1., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_min_round_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_setr_pd(7., 6., 5., 4., 3., 2., 1., 0.);
        let r = _mm512_mask_min_round_pd::<_MM_FROUND_CUR_DIRECTION>(a, 0, a, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_min_round_pd::<_MM_FROUND_CUR_DIRECTION>(a, 0b00001111, a, b);
        let e = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_min_round_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_setr_pd(7., 6., 5., 4., 3., 2., 1., 0.);
        let r = _mm512_maskz_min_round_pd::<_MM_FROUND_CUR_DIRECTION>(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_min_round_pd::<_MM_FROUND_CUR_DIRECTION>(0b00001111, a, b);
        let e = _mm512_setr_pd(0., 1., 2., 3., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_getexp_round_pd() {
        let a = _mm512_set1_pd(3.);
        let r = _mm512_getexp_round_pd::<_MM_FROUND_CUR_DIRECTION>(a);
        let e = _mm512_set1_pd(1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_getexp_round_pd() {
        let a = _mm512_set1_pd(3.);
        let r = _mm512_mask_getexp_round_pd::<_MM_FROUND_CUR_DIRECTION>(a, 0, a);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_getexp_round_pd::<_MM_FROUND_CUR_DIRECTION>(a, 0b11110000, a);
        let e = _mm512_setr_pd(3., 3., 3., 3., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_getexp_round_pd() {
        let a = _mm512_set1_pd(3.);
        let r = _mm512_maskz_getexp_round_pd::<_MM_FROUND_CUR_DIRECTION>(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_getexp_round_pd::<_MM_FROUND_CUR_DIRECTION>(0b11110000, a);
        let e = _mm512_setr_pd(0., 0., 0., 0., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_roundscale_round_pd() {
        let a = _mm512_set1_pd(1.1);
        let r = _mm512_roundscale_round_pd::<0, _MM_FROUND_CUR_DIRECTION>(a);
        let e = _mm512_set1_pd(1.0);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_roundscale_round_pd() {
        let a = _mm512_set1_pd(1.1);
        let r = _mm512_mask_roundscale_round_pd::<0, _MM_FROUND_CUR_DIRECTION>(a, 0, a);
        let e = _mm512_set1_pd(1.1);
        assert_eq_m512d(r, e);
        let r = _mm512_mask_roundscale_round_pd::<0, _MM_FROUND_CUR_DIRECTION>(a, 0b11111111, a);
        let e = _mm512_set1_pd(1.0);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_roundscale_round_pd() {
        let a = _mm512_set1_pd(1.1);
        let r = _mm512_maskz_roundscale_round_pd::<0, _MM_FROUND_CUR_DIRECTION>(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_roundscale_round_pd::<0, _MM_FROUND_CUR_DIRECTION>(0b11111111, a);
        let e = _mm512_set1_pd(1.0);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_scalef_round_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_set1_pd(3.);
        let r = _mm512_scalef_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm512_set1_pd(8.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_scalef_round_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_set1_pd(3.);
        let r = _mm512_mask_scalef_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0, a, b,
        );
        assert_eq_m512d(r, a);
        let r = _mm512_mask_scalef_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            a, 0b11110000, a, b,
        );
        let e = _mm512_set_pd(8., 8., 8., 8., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_scalef_round_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_set1_pd(3.);
        let r = _mm512_maskz_scalef_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0, a, b,
        );
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_scalef_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
            0b11110000, a, b,
        );
        let e = _mm512_set_pd(8., 8., 8., 8., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_fixupimm_round_pd() {
        let a = _mm512_set1_pd(f64::NAN);
        let b = _mm512_set1_pd(f64::MAX);
        let c = _mm512_set1_epi64(i32::MAX as i64);
        let r = _mm512_fixupimm_round_pd::<5, _MM_FROUND_CUR_DIRECTION>(a, b, c);
        let e = _mm512_set1_pd(0.0);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_fixupimm_round_pd() {
        let a = _mm512_set_pd(f64::NAN, f64::NAN, f64::NAN, f64::NAN, 1., 1., 1., 1.);
        let b = _mm512_set1_pd(f64::MAX);
        let c = _mm512_set1_epi64(i32::MAX as i64);
        let r = _mm512_mask_fixupimm_round_pd::<5, _MM_FROUND_CUR_DIRECTION>(a, 0b11110000, b, c);
        let e = _mm512_set_pd(0., 0., 0., 0., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_fixupimm_round_pd() {
        let a = _mm512_set_pd(f64::NAN, f64::NAN, f64::NAN, f64::NAN, 1., 1., 1., 1.);
        let b = _mm512_set1_pd(f64::MAX);
        let c = _mm512_set1_epi64(i32::MAX as i64);
        let r = _mm512_maskz_fixupimm_round_pd::<5, _MM_FROUND_CUR_DIRECTION>(0b11110000, a, b, c);
        let e = _mm512_set_pd(0., 0., 0., 0., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_getmant_round_pd() {
        let a = _mm512_set1_pd(10.);
        let r = _mm512_getmant_round_pd::<
            _MM_MANT_NORM_1_2,
            _MM_MANT_SIGN_SRC,
            _MM_FROUND_CUR_DIRECTION,
        >(a);
        let e = _mm512_set1_pd(1.25);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_getmant_round_pd() {
        let a = _mm512_set1_pd(10.);
        let r = _mm512_mask_getmant_round_pd::<
            _MM_MANT_NORM_1_2,
            _MM_MANT_SIGN_SRC,
            _MM_FROUND_CUR_DIRECTION,
        >(a, 0, a);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_getmant_round_pd::<
            _MM_MANT_NORM_1_2,
            _MM_MANT_SIGN_SRC,
            _MM_FROUND_CUR_DIRECTION,
        >(a, 0b11110000, a);
        let e = _mm512_setr_pd(10., 10., 10., 10., 1.25, 1.25, 1.25, 1.25);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_getmant_round_pd() {
        let a = _mm512_set1_pd(10.);
        let r = _mm512_maskz_getmant_round_pd::<
            _MM_MANT_NORM_1_2,
            _MM_MANT_SIGN_SRC,
            _MM_FROUND_CUR_DIRECTION,
        >(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_getmant_round_pd::<
            _MM_MANT_NORM_1_2,
            _MM_MANT_SIGN_SRC,
            _MM_FROUND_CUR_DIRECTION,
        >(0b11110000, a);
        let e = _mm512_setr_pd(0., 0., 0., 0., 1.25, 1.25, 1.25, 1.25);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvt_roundps_pd() {
        let a = _mm256_setr_ps(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_cvt_roundps_pd::<_MM_FROUND_CUR_DIRECTION>(a);
        let e = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvt_roundps_pd() {
        let a = _mm256_setr_ps(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let src = _mm512_set1_pd(0.);
        let r = _mm512_mask_cvt_roundps_pd::<_MM_FROUND_CUR_DIRECTION>(src, 0, a);
        assert_eq_m512d(r, src);
        let r = _mm512_mask_cvt_roundps_pd::<_MM_FROUND_CUR_DIRECTION>(src, 0b00001111, a);
        let e = _mm512_setr_pd(0., -1.5, 2., -3.5, 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvt_roundps_pd() {
        let a = _mm256_setr_ps(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_maskz_cvt_roundps_pd::<_MM_FROUND_CUR_DIRECTION>(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_cvt_roundps_pd::<_MM_FROUND_CUR_DIRECTION>(0b00001111, a);
        let e = _mm512_setr_pd(0., -1.5, 2., -3.5, 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvt_roundpd_ps() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_cvt_roundpd_ps::<_MM_FROUND_CUR_DIRECTION>(a);
        let e = _mm256_setr_ps(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        assert_eq_m256(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvt_roundpd_ps() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let src = _mm256_set1_ps(0.);
        let r = _mm512_mask_cvt_roundpd_ps::<_MM_FROUND_CUR_DIRECTION>(src, 0, a);
        assert_eq_m256(r, src);
        let r = _mm512_mask_cvt_roundpd_ps::<_MM_FROUND_CUR_DIRECTION>(src, 0b00001111, a);
        let e = _mm256_setr_ps(0., -1.5, 2., -3.5, 0., 0., 0., 0.);
        assert_eq_m256(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvt_roundpd_ps() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_maskz_cvt_roundpd_ps::<_MM_FROUND_CUR_DIRECTION>(0, a);
        assert_eq_m256(r, _mm256_setzero_ps());
        let r = _mm512_maskz_cvt_roundpd_ps::<_MM_FROUND_CUR_DIRECTION>(0b00001111, a);
        let e = _mm256_setr_ps(0., -1.5, 2., -3.5, 0., 0., 0., 0.);
        assert_eq_m256(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvt_roundpd_epi32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_cvt_roundpd_epi32::<_MM_FROUND_CUR_DIRECTION>(a);
        let e = _mm256_setr_epi32(0, -2, 2, -4, 4, -6, 6, -8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvt_roundpd_epi32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let src = _mm256_set1_epi32(0);
        let r = _mm512_mask_cvt_roundpd_epi32::<_MM_FROUND_CUR_DIRECTION>(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm512_mask_cvt_roundpd_epi32::<_MM_FROUND_CUR_DIRECTION>(src, 0b00001111, a);
        let e = _mm256_setr_epi32(0, -2, 2, -4, 0, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvt_roundpd_epi32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_maskz_cvt_roundpd_epi32::<_MM_FROUND_CUR_DIRECTION>(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm512_maskz_cvt_roundpd_epi32::<_MM_FROUND_CUR_DIRECTION>(0b00001111, a);
        let e = _mm256_setr_epi32(0, -2, 2, -4, 0, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cvt_roundpd_epu32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_cvt_roundpd_epu32::<_MM_FROUND_CUR_DIRECTION>(a);
        let e = _mm256_setr_epi32(0, -1, 2, -1, 4, -1, 6, -1);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvt_roundpd_epu32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let src = _mm256_set1_epi32(0);
        let r = _mm512_mask_cvt_roundpd_epu32::<_MM_FROUND_CUR_DIRECTION>(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm512_mask_cvt_roundpd_epu32::<_MM_FROUND_CUR_DIRECTION>(src, 0b00001111, a);
        let e = _mm256_setr_epi32(0, -1, 2, -1, 0, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_cvt_roundpd_epu32() {
        let a = _mm512_setr_pd(0., -1.5, 2., -3.5, 4., -5.5, 6., -7.5);
        let r = _mm512_maskz_cvt_roundpd_epu32::<_MM_FROUND_CUR_DIRECTION>(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm512_maskz_cvt_roundpd_epu32::<_MM_FROUND_CUR_DIRECTION>(0b00001111, a);
        let e = _mm256_setr_epi32(0, -1, 2, -1, 0, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_setzero_pd() {
        assert_eq_m512d(_mm512_setzero_pd(), _mm512_set1_pd(0.));
    }

    unsafe fn test_mm512_set1_epi64() {
        let r = _mm512_set_epi64(2, 2, 2, 2, 2, 2, 2, 2);
        assert_eq_m512i(r, _mm512_set1_epi64(2));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_set1_pd() {
        let expected = _mm512_set_pd(2., 2., 2., 2., 2., 2., 2., 2.);
        assert_eq_m512d(expected, _mm512_set1_pd(2.));
    }

    unsafe fn test_mm512_set4_epi64() {
        let r = _mm512_set_epi64(4, 3, 2, 1, 4, 3, 2, 1);
        assert_eq_m512i(r, _mm512_set4_epi64(4, 3, 2, 1));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_set4_pd() {
        let r = _mm512_set_pd(4., 3., 2., 1., 4., 3., 2., 1.);
        assert_eq_m512d(r, _mm512_set4_pd(4., 3., 2., 1.));
    }

    unsafe fn test_mm512_setr4_epi64() {
        let r = _mm512_set_epi64(4, 3, 2, 1, 4, 3, 2, 1);
        assert_eq_m512i(r, _mm512_setr4_epi64(1, 2, 3, 4));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_setr4_pd() {
        let r = _mm512_set_pd(4., 3., 2., 1., 4., 3., 2., 1.);
        assert_eq_m512d(r, _mm512_setr4_pd(1., 2., 3., 4.));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmplt_pd_mask() {
        #[rustfmt::skip]
        let a = _mm512_set_pd(0., 1., -1., f64::MAX, f64::NAN, f64::MIN, 100., -100.);
        let b = _mm512_set1_pd(-1.);
        let m = _mm512_cmplt_pd_mask(a, b);
        assert_eq!(m, 0b00000101);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmplt_pd_mask() {
        #[rustfmt::skip]
        let a = _mm512_set_pd(0., 1., -1., f64::MAX, f64::NAN, f64::MIN, 100., -100.);
        let b = _mm512_set1_pd(-1.);
        let mask = 0b01100110;
        let r = _mm512_mask_cmplt_pd_mask(mask, a, b);
        assert_eq!(r, 0b00000100);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmpnlt_pd_mask() {
        #[rustfmt::skip]
        let a = _mm512_set_pd(0., 1., -1., f64::MAX, f64::NAN, f64::MIN, 100., -100.);
        let b = _mm512_set1_pd(-1.);
        assert_eq!(_mm512_cmpnlt_pd_mask(a, b), !_mm512_cmplt_pd_mask(a, b));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmpnlt_pd_mask() {
        #[rustfmt::skip]
        let a = _mm512_set_pd(0., 1., -1., f64::MAX, f64::NAN, f64::MIN, 100., -100.);
        let b = _mm512_set1_pd(-1.);
        let mask = 0b01111010;
        assert_eq!(_mm512_mask_cmpnlt_pd_mask(mask, a, b), 0b01111010);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmple_pd_mask() {
        #[rustfmt::skip]
        let a = _mm512_set_pd(0., 1., -1., f64::MAX, f64::NAN, f64::MIN, 100., -100.);
        let b = _mm512_set1_pd(-1.);
        assert_eq!(_mm512_cmple_pd_mask(a, b), 0b00100101);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmple_pd_mask() {
        #[rustfmt::skip]
        let a = _mm512_set_pd(0., 1., -1., f64::MAX, f64::NAN, f64::MIN, 100., -100.);
        let b = _mm512_set1_pd(-1.);
        let mask = 0b01111010;
        assert_eq!(_mm512_mask_cmple_pd_mask(mask, a, b), 0b00100000);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmpnle_pd_mask() {
        #[rustfmt::skip]
        let a = _mm512_set_pd(0., 1., -1., f64::MAX, f64::NAN, f64::MIN, 100., -100.);
        let b = _mm512_set1_pd(-1.);
        let m = _mm512_cmpnle_pd_mask(b, a);
        assert_eq!(m, 0b00001101);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmpnle_pd_mask() {
        #[rustfmt::skip]
        let a = _mm512_set_pd(0., 1., -1., f64::MAX, f64::NAN, f64::MIN, 100., -100.);
        let b = _mm512_set1_pd(-1.);
        let mask = 0b01100110;
        let r = _mm512_mask_cmpnle_pd_mask(mask, b, a);
        assert_eq!(r, 0b00000100);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmpeq_pd_mask() {
        let a = _mm512_set_pd(0., 1., -1., 13., f64::MAX, f64::MIN, f64::NAN, -100.);
        let b = _mm512_set_pd(0., 1., 13., 42., f64::MAX, f64::MIN, f64::NAN, -100.);
        let m = _mm512_cmpeq_pd_mask(b, a);
        assert_eq!(m, 0b11001101);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmpeq_pd_mask() {
        let a = _mm512_set_pd(0., 1., -1., 13., f64::MAX, f64::MIN, f64::NAN, -100.);
        let b = _mm512_set_pd(0., 1., 13., 42., f64::MAX, f64::MIN, f64::NAN, -100.);
        let mask = 0b01111010;
        let r = _mm512_mask_cmpeq_pd_mask(mask, b, a);
        assert_eq!(r, 0b01001000);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmpneq_pd_mask() {
        let a = _mm512_set_pd(0., 1., -1., 13., f64::MAX, f64::MIN, f64::NAN, -100.);
        let b = _mm512_set_pd(0., 1., 13., 42., f64::MAX, f64::MIN, f64::NAN, -100.);
        let m = _mm512_cmpneq_pd_mask(b, a);
        assert_eq!(m, 0b00110010);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmpneq_pd_mask() {
        let a = _mm512_set_pd(0., 1., -1., 13., f64::MAX, f64::MIN, f64::NAN, -100.);
        let b = _mm512_set_pd(0., 1., 13., 42., f64::MAX, f64::MIN, f64::NAN, -100.);
        let mask = 0b01111010;
        let r = _mm512_mask_cmpneq_pd_mask(mask, b, a);
        assert_eq!(r, 0b00110010)
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmp_pd_mask() {
        let a = _mm512_set_pd(0., 1., -1., 13., f64::MAX, f64::MIN, 100., -100.);
        let b = _mm512_set1_pd(-1.);
        let m = _mm512_cmp_pd_mask::<_CMP_LT_OQ>(a, b);
        assert_eq!(m, 0b00000101);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmp_pd_mask() {
        let a = _mm512_set_pd(0., 1., -1., 13., f64::MAX, f64::MIN, 100., -100.);
        let b = _mm512_set1_pd(-1.);
        let mask = 0b01100110;
        let r = _mm512_mask_cmp_pd_mask::<_CMP_LT_OQ>(mask, a, b);
        assert_eq!(r, 0b00000100);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmp_pd_mask() {
        let a = _mm256_set_pd(0., 1., -1., 13.);
        let b = _mm256_set1_pd(1.);
        let m = _mm256_cmp_pd_mask::<_CMP_LT_OQ>(a, b);
        assert_eq!(m, 0b00001010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmp_pd_mask() {
        let a = _mm256_set_pd(0., 1., -1., 13.);
        let b = _mm256_set1_pd(1.);
        let mask = 0b11111111;
        let r = _mm256_mask_cmp_pd_mask::<_CMP_LT_OQ>(mask, a, b);
        assert_eq!(r, 0b00001010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmp_pd_mask() {
        let a = _mm_set_pd(0., 1.);
        let b = _mm_set1_pd(1.);
        let m = _mm_cmp_pd_mask::<_CMP_LT_OQ>(a, b);
        assert_eq!(m, 0b00000010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmp_pd_mask() {
        let a = _mm_set_pd(0., 1.);
        let b = _mm_set1_pd(1.);
        let mask = 0b11111111;
        let r = _mm_mask_cmp_pd_mask::<_CMP_LT_OQ>(mask, a, b);
        assert_eq!(r, 0b00000010);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmp_round_pd_mask() {
        #[rustfmt::skip]
        let a = _mm512_set_pd(0., 1., -1., 13., f64::MAX, f64::MIN, 100., -100.);
        let b = _mm512_set1_pd(-1.);
        let m = _mm512_cmp_round_pd_mask::<_CMP_LT_OQ, _MM_FROUND_CUR_DIRECTION>(a, b);
        assert_eq!(m, 0b00000101);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmp_round_pd_mask() {
        #[rustfmt::skip]
        let a = _mm512_set_pd(0., 1., -1., 13., f64::MAX, f64::MIN, 100., -100.);
        let b = _mm512_set1_pd(-1.);
        let mask = 0b01100110;
        let r = _mm512_mask_cmp_round_pd_mask::<_CMP_LT_OQ, _MM_FROUND_CUR_DIRECTION>(mask, a, b);
        assert_eq!(r, 0b00000100);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmpord_pd_mask() {
        #[rustfmt::skip]
        let a = _mm512_set_pd(f64::NAN, f64::MAX, f64::NAN, f64::MIN, f64::NAN, -1., f64::NAN, 0.);
        #[rustfmt::skip]
        let b = _mm512_set_pd(f64::NAN, f64::NAN, f64::NAN, f64::NAN, f64::MIN, f64::MAX, -1., 0.);
        let m = _mm512_cmpord_pd_mask(a, b);
        assert_eq!(m, 0b00000101);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmpord_pd_mask() {
        #[rustfmt::skip]
        let a = _mm512_set_pd(f64::NAN, f64::MAX, f64::NAN, f64::MIN, f64::NAN, -1., f64::NAN, 0.);
        #[rustfmt::skip]
        let b = _mm512_set_pd(f64::NAN, f64::NAN, f64::NAN, f64::NAN, f64::MIN, f64::MAX, -1., 0.);
        let mask = 0b11000011;
        let m = _mm512_mask_cmpord_pd_mask(mask, a, b);
        assert_eq!(m, 0b00000001);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmpunord_pd_mask() {
        #[rustfmt::skip]
        let a = _mm512_set_pd(f64::NAN, f64::MAX, f64::NAN, f64::MIN, f64::NAN, -1., f64::NAN, 0.);
        #[rustfmt::skip]
        let b = _mm512_set_pd(f64::NAN, f64::NAN, f64::NAN, f64::NAN, f64::MIN, f64::MAX, -1., 0.);
        let m = _mm512_cmpunord_pd_mask(a, b);

        assert_eq!(m, 0b11111010);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmpunord_pd_mask() {
        #[rustfmt::skip]
        let a = _mm512_set_pd(f64::NAN, f64::MAX, f64::NAN, f64::MIN, f64::NAN, -1., f64::NAN, 0.);
        #[rustfmt::skip]
        let b = _mm512_set_pd(f64::NAN, f64::NAN, f64::NAN, f64::NAN, f64::MIN, f64::MAX, -1., 0.);
        let mask = 0b00001111;
        let m = _mm512_mask_cmpunord_pd_mask(mask, a, b);
        assert_eq!(m, 0b000001010);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmplt_epu64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let m = _mm512_cmplt_epu64_mask(a, b);
        assert_eq!(m, 0b11001111);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmplt_epu64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let mask = 0b01111010;
        let r = _mm512_mask_cmplt_epu64_mask(mask, a, b);
        assert_eq!(r, 0b01001010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmplt_epu64_mask() {
        let a = _mm256_set_epi64x(0, 1, 2, 100);
        let b = _mm256_set1_epi64x(2);
        let r = _mm256_cmplt_epu64_mask(a, b);
        assert_eq!(r, 0b00001100);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmplt_epu64_mask() {
        let a = _mm256_set_epi64x(0, 1, 2, 100);
        let b = _mm256_set1_epi64x(2);
        let mask = 0b11111111;
        let r = _mm256_mask_cmplt_epu64_mask(mask, a, b);
        assert_eq!(r, 0b00001100);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmplt_epu64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set1_epi64x(2);
        let r = _mm_cmplt_epu64_mask(a, b);
        assert_eq!(r, 0b00000011);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmplt_epu64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set1_epi64x(2);
        let mask = 0b11111111;
        let r = _mm_mask_cmplt_epu64_mask(mask, a, b);
        assert_eq!(r, 0b00000011);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmpgt_epu64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let m = _mm512_cmpgt_epu64_mask(b, a);
        assert_eq!(m, 0b11001111);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmpgt_epu64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let mask = 0b01111010;
        let r = _mm512_mask_cmpgt_epu64_mask(mask, b, a);
        assert_eq!(r, 0b01001010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmpgt_epu64_mask() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let b = _mm256_set1_epi64x(1);
        let r = _mm256_cmpgt_epu64_mask(a, b);
        assert_eq!(r, 0b00000011);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmpgt_epu64_mask() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let b = _mm256_set1_epi64x(1);
        let mask = 0b11111111;
        let r = _mm256_mask_cmpgt_epu64_mask(mask, a, b);
        assert_eq!(r, 0b00000011);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmpgt_epu64_mask() {
        let a = _mm_set_epi64x(1, 2);
        let b = _mm_set1_epi64x(1);
        let r = _mm_cmpgt_epu64_mask(a, b);
        assert_eq!(r, 0b00000001);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmpgt_epu64_mask() {
        let a = _mm_set_epi64x(1, 2);
        let b = _mm_set1_epi64x(1);
        let mask = 0b11111111;
        let r = _mm_mask_cmpgt_epu64_mask(mask, a, b);
        assert_eq!(r, 0b00000001);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmple_epu64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        assert_eq!(
            _mm512_cmple_epu64_mask(a, b),
            !_mm512_cmpgt_epu64_mask(a, b)
        )
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmple_epu64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let mask = 0b01111010;
        assert_eq!(_mm512_mask_cmple_epu64_mask(mask, a, b), 0b01111010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmple_epu64_mask() {
        let a = _mm256_set_epi64x(0, 1, 2, 1);
        let b = _mm256_set1_epi64x(1);
        let r = _mm256_cmple_epu64_mask(a, b);
        assert_eq!(r, 0b00001101)
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmple_epu64_mask() {
        let a = _mm256_set_epi64x(0, 1, 2, 1);
        let b = _mm256_set1_epi64x(1);
        let mask = 0b11111111;
        let r = _mm256_mask_cmple_epu64_mask(mask, a, b);
        assert_eq!(r, 0b00001101)
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmple_epu64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set1_epi64x(1);
        let r = _mm_cmple_epu64_mask(a, b);
        assert_eq!(r, 0b00000011)
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmple_epu64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set1_epi64x(1);
        let mask = 0b11111111;
        let r = _mm_mask_cmple_epu64_mask(mask, a, b);
        assert_eq!(r, 0b00000011)
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmpge_epu64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        assert_eq!(
            _mm512_cmpge_epu64_mask(a, b),
            !_mm512_cmplt_epu64_mask(a, b)
        );
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmpge_epu64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let mask = 0b11111111;
        let r = _mm512_mask_cmpge_epu64_mask(mask, a, b);
        assert_eq!(r, 0b00110000);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmpge_epu64_mask() {
        let a = _mm256_set_epi64x(0, 1, 2, u64::MAX as i64);
        let b = _mm256_set1_epi64x(1);
        let r = _mm256_cmpge_epu64_mask(a, b);
        assert_eq!(r, 0b00000111);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmpge_epu64_mask() {
        let a = _mm256_set_epi64x(0, 1, 2, u64::MAX as i64);
        let b = _mm256_set1_epi64x(1);
        let mask = 0b11111111;
        let r = _mm256_mask_cmpge_epu64_mask(mask, a, b);
        assert_eq!(r, 0b00000111);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmpge_epu64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set1_epi64x(1);
        let r = _mm_cmpge_epu64_mask(a, b);
        assert_eq!(r, 0b00000001);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmpge_epu64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set1_epi64x(1);
        let mask = 0b11111111;
        let r = _mm_mask_cmpge_epu64_mask(mask, a, b);
        assert_eq!(r, 0b00000001);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmpeq_epu64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set_epi64(0, 1, 13, 42, i64::MAX, i64::MIN, 100, -100);
        let m = _mm512_cmpeq_epu64_mask(b, a);
        assert_eq!(m, 0b11001111);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmpeq_epu64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set_epi64(0, 1, 13, 42, i64::MAX, i64::MIN, 100, -100);
        let mask = 0b01111010;
        let r = _mm512_mask_cmpeq_epu64_mask(mask, b, a);
        assert_eq!(r, 0b01001010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmpeq_epu64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, u64::MAX as i64);
        let b = _mm256_set_epi64x(0, 1, 13, 42);
        let m = _mm256_cmpeq_epu64_mask(b, a);
        assert_eq!(m, 0b00001100);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmpeq_epu64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, u64::MAX as i64);
        let b = _mm256_set_epi64x(0, 1, 13, 42);
        let mask = 0b11111111;
        let r = _mm256_mask_cmpeq_epu64_mask(mask, b, a);
        assert_eq!(r, 0b00001100);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmpeq_epu64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set_epi64x(0, 1);
        let m = _mm_cmpeq_epu64_mask(b, a);
        assert_eq!(m, 0b00000011);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmpeq_epu64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set_epi64x(0, 1);
        let mask = 0b11111111;
        let r = _mm_mask_cmpeq_epu64_mask(mask, b, a);
        assert_eq!(r, 0b00000011);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmpneq_epu64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set_epi64(0, 1, 13, 42, i64::MAX, i64::MIN, 100, -100);
        let m = _mm512_cmpneq_epu64_mask(b, a);
        assert_eq!(m, !_mm512_cmpeq_epu64_mask(b, a));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmpneq_epu64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, -100, 100);
        let b = _mm512_set_epi64(0, 1, 13, 42, i64::MAX, i64::MIN, 100, -100);
        let mask = 0b01111010;
        let r = _mm512_mask_cmpneq_epu64_mask(mask, b, a);
        assert_eq!(r, 0b00110010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmpneq_epu64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, u64::MAX as i64);
        let b = _mm256_set_epi64x(0, 1, 13, 42);
        let r = _mm256_cmpneq_epu64_mask(b, a);
        assert_eq!(r, 0b00000011);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmpneq_epu64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, u64::MAX as i64);
        let b = _mm256_set_epi64x(0, 1, 13, 42);
        let mask = 0b11111111;
        let r = _mm256_mask_cmpneq_epu64_mask(mask, b, a);
        assert_eq!(r, 0b00000011);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmpneq_epu64_mask() {
        let a = _mm_set_epi64x(-1, u64::MAX as i64);
        let b = _mm_set_epi64x(13, 42);
        let r = _mm_cmpneq_epu64_mask(b, a);
        assert_eq!(r, 0b00000011);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmpneq_epu64_mask() {
        let a = _mm_set_epi64x(-1, u64::MAX as i64);
        let b = _mm_set_epi64x(13, 42);
        let mask = 0b11111111;
        let r = _mm_mask_cmpneq_epu64_mask(mask, b, a);
        assert_eq!(r, 0b00000011);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmp_epu64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let m = _mm512_cmp_epu64_mask::<_MM_CMPINT_LT>(a, b);
        assert_eq!(m, 0b11001111);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmp_epu64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let mask = 0b01111010;
        let r = _mm512_mask_cmp_epu64_mask::<_MM_CMPINT_LT>(mask, a, b);
        assert_eq!(r, 0b01001010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmp_epu64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, 100);
        let b = _mm256_set1_epi64x(1);
        let m = _mm256_cmp_epu64_mask::<_MM_CMPINT_LT>(a, b);
        assert_eq!(m, 0b00001000);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmp_epu64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, 100);
        let b = _mm256_set1_epi64x(1);
        let mask = 0b11111111;
        let r = _mm256_mask_cmp_epu64_mask::<_MM_CMPINT_LT>(mask, a, b);
        assert_eq!(r, 0b00001000);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmp_epu64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set1_epi64x(1);
        let m = _mm_cmp_epu64_mask::<_MM_CMPINT_LT>(a, b);
        assert_eq!(m, 0b00000010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmp_epu64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set1_epi64x(1);
        let mask = 0b11111111;
        let r = _mm_mask_cmp_epu64_mask::<_MM_CMPINT_LT>(mask, a, b);
        assert_eq!(r, 0b00000010);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmplt_epi64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, 13, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let m = _mm512_cmplt_epi64_mask(a, b);
        assert_eq!(m, 0b00000101);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmplt_epi64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, 13, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let mask = 0b01100110;
        let r = _mm512_mask_cmplt_epi64_mask(mask, a, b);
        assert_eq!(r, 0b00000100);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmplt_epi64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, -13);
        let b = _mm256_set1_epi64x(-1);
        let r = _mm256_cmplt_epi64_mask(a, b);
        assert_eq!(r, 0b00000001);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmplt_epi64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, -13);
        let b = _mm256_set1_epi64x(-1);
        let mask = 0b11111111;
        let r = _mm256_mask_cmplt_epi64_mask(mask, a, b);
        assert_eq!(r, 0b00000001);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmplt_epi64_mask() {
        let a = _mm_set_epi64x(-1, -13);
        let b = _mm_set1_epi64x(-1);
        let r = _mm_cmplt_epi64_mask(a, b);
        assert_eq!(r, 0b00000001);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmplt_epi64_mask() {
        let a = _mm_set_epi64x(-1, -13);
        let b = _mm_set1_epi64x(-1);
        let mask = 0b11111111;
        let r = _mm_mask_cmplt_epi64_mask(mask, a, b);
        assert_eq!(r, 0b00000001);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmpgt_epi64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, 13, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let m = _mm512_cmpgt_epi64_mask(b, a);
        assert_eq!(m, 0b00000101);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmpgt_epi64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, 13, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let mask = 0b01100110;
        let r = _mm512_mask_cmpgt_epi64_mask(mask, b, a);
        assert_eq!(r, 0b00000100);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmpgt_epi64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, 13);
        let b = _mm256_set1_epi64x(-1);
        let r = _mm256_cmpgt_epi64_mask(a, b);
        assert_eq!(r, 0b00001101);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmpgt_epi64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, 13);
        let b = _mm256_set1_epi64x(-1);
        let mask = 0b11111111;
        let r = _mm256_mask_cmpgt_epi64_mask(mask, a, b);
        assert_eq!(r, 0b00001101);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmpgt_epi64_mask() {
        let a = _mm_set_epi64x(0, -1);
        let b = _mm_set1_epi64x(-1);
        let r = _mm_cmpgt_epi64_mask(a, b);
        assert_eq!(r, 0b00000010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmpgt_epi64_mask() {
        let a = _mm_set_epi64x(0, -1);
        let b = _mm_set1_epi64x(-1);
        let mask = 0b11111111;
        let r = _mm_mask_cmpgt_epi64_mask(mask, a, b);
        assert_eq!(r, 0b00000010);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmple_epi64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        assert_eq!(
            _mm512_cmple_epi64_mask(a, b),
            !_mm512_cmpgt_epi64_mask(a, b)
        )
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmple_epi64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let mask = 0b01111010;
        assert_eq!(_mm512_mask_cmple_epi64_mask(mask, a, b), 0b00110000);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmple_epi64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, i64::MAX);
        let b = _mm256_set1_epi64x(-1);
        let r = _mm256_cmple_epi64_mask(a, b);
        assert_eq!(r, 0b00000010)
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmple_epi64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, i64::MAX);
        let b = _mm256_set1_epi64x(-1);
        let mask = 0b11111111;
        let r = _mm256_mask_cmple_epi64_mask(mask, a, b);
        assert_eq!(r, 0b00000010)
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmple_epi64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set1_epi64x(1);
        let r = _mm_cmple_epi64_mask(a, b);
        assert_eq!(r, 0b00000011)
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmple_epi64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set1_epi64x(1);
        let mask = 0b11111111;
        let r = _mm_mask_cmple_epi64_mask(mask, a, b);
        assert_eq!(r, 0b00000011)
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmpge_epi64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        assert_eq!(
            _mm512_cmpge_epi64_mask(a, b),
            !_mm512_cmplt_epi64_mask(a, b)
        )
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmpge_epi64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, u64::MAX as i64, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let mask = 0b11111111;
        let r = _mm512_mask_cmpge_epi64_mask(mask, a, b);
        assert_eq!(r, 0b11111010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmpge_epi64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, i64::MAX);
        let b = _mm256_set1_epi64x(-1);
        let r = _mm256_cmpge_epi64_mask(a, b);
        assert_eq!(r, 0b00001111);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmpge_epi64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, i64::MAX);
        let b = _mm256_set1_epi64x(-1);
        let mask = 0b11111111;
        let r = _mm256_mask_cmpge_epi64_mask(mask, a, b);
        assert_eq!(r, 0b00001111);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmpge_epi64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set1_epi64x(-1);
        let r = _mm_cmpge_epi64_mask(a, b);
        assert_eq!(r, 0b00000011);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmpge_epi64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set1_epi64x(-1);
        let mask = 0b11111111;
        let r = _mm_mask_cmpge_epi64_mask(mask, a, b);
        assert_eq!(r, 0b00000011);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmpeq_epi64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, 13, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set_epi64(0, 1, 13, 42, i64::MAX, i64::MIN, 100, -100);
        let m = _mm512_cmpeq_epi64_mask(b, a);
        assert_eq!(m, 0b11001111);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmpeq_epi64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, 13, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set_epi64(0, 1, 13, 42, i64::MAX, i64::MIN, 100, -100);
        let mask = 0b01111010;
        let r = _mm512_mask_cmpeq_epi64_mask(mask, b, a);
        assert_eq!(r, 0b01001010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmpeq_epi64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, 13);
        let b = _mm256_set_epi64x(0, 1, 13, 42);
        let m = _mm256_cmpeq_epi64_mask(b, a);
        assert_eq!(m, 0b00001100);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmpeq_epi64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, 13);
        let b = _mm256_set_epi64x(0, 1, 13, 42);
        let mask = 0b11111111;
        let r = _mm256_mask_cmpeq_epi64_mask(mask, b, a);
        assert_eq!(r, 0b00001100);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmpeq_epi64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set_epi64x(0, 1);
        let m = _mm_cmpeq_epi64_mask(b, a);
        assert_eq!(m, 0b00000011);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmpeq_epi64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set_epi64x(0, 1);
        let mask = 0b11111111;
        let r = _mm_mask_cmpeq_epi64_mask(mask, b, a);
        assert_eq!(r, 0b00000011);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_set_epi64() {
        let r = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        assert_eq_m512i(r, _mm512_set_epi64(7, 6, 5, 4, 3, 2, 1, 0))
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_setr_epi64() {
        let r = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        assert_eq_m512i(r, _mm512_setr_epi64(7, 6, 5, 4, 3, 2, 1, 0))
    }

    unsafe fn test_mm512_cmpneq_epi64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, 13, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set_epi64(0, 1, 13, 42, i64::MAX, i64::MIN, 100, -100);
        let m = _mm512_cmpneq_epi64_mask(b, a);
        assert_eq!(m, !_mm512_cmpeq_epi64_mask(b, a));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmpneq_epi64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, 13, i64::MAX, i64::MIN, -100, 100);
        let b = _mm512_set_epi64(0, 1, 13, 42, i64::MAX, i64::MIN, 100, -100);
        let mask = 0b01111010;
        let r = _mm512_mask_cmpneq_epi64_mask(mask, b, a);
        assert_eq!(r, 0b00110010)
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmpneq_epi64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, 13);
        let b = _mm256_set_epi64x(0, 1, 13, 42);
        let r = _mm256_cmpneq_epi64_mask(b, a);
        assert_eq!(r, 0b00000011)
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmpneq_epi64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, 13);
        let b = _mm256_set_epi64x(0, 1, 13, 42);
        let mask = 0b11111111;
        let r = _mm256_mask_cmpneq_epi64_mask(mask, b, a);
        assert_eq!(r, 0b00000011)
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmpneq_epi64_mask() {
        let a = _mm_set_epi64x(-1, 13);
        let b = _mm_set_epi64x(13, 42);
        let r = _mm_cmpneq_epi64_mask(b, a);
        assert_eq!(r, 0b00000011)
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmpneq_epi64_mask() {
        let a = _mm_set_epi64x(-1, 13);
        let b = _mm_set_epi64x(13, 42);
        let mask = 0b11111111;
        let r = _mm_mask_cmpneq_epi64_mask(mask, b, a);
        assert_eq!(r, 0b00000011)
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_cmp_epi64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, 13, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let m = _mm512_cmp_epi64_mask::<_MM_CMPINT_LT>(a, b);
        assert_eq!(m, 0b00000101);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cmp_epi64_mask() {
        let a = _mm512_set_epi64(0, 1, -1, 13, i64::MAX, i64::MIN, 100, -100);
        let b = _mm512_set1_epi64(-1);
        let mask = 0b01100110;
        let r = _mm512_mask_cmp_epi64_mask::<_MM_CMPINT_LT>(mask, a, b);
        assert_eq!(r, 0b00000100);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_cmp_epi64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, 13);
        let b = _mm256_set1_epi64x(1);
        let m = _mm256_cmp_epi64_mask::<_MM_CMPINT_LT>(a, b);
        assert_eq!(m, 0b00001010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cmp_epi64_mask() {
        let a = _mm256_set_epi64x(0, 1, -1, 13);
        let b = _mm256_set1_epi64x(1);
        let mask = 0b11111111;
        let r = _mm256_mask_cmp_epi64_mask::<_MM_CMPINT_LT>(mask, a, b);
        assert_eq!(r, 0b00001010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_cmp_epi64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set1_epi64x(1);
        let m = _mm_cmp_epi64_mask::<_MM_CMPINT_LT>(a, b);
        assert_eq!(m, 0b00000010);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cmp_epi64_mask() {
        let a = _mm_set_epi64x(0, 1);
        let b = _mm_set1_epi64x(1);
        let mask = 0b11111111;
        let r = _mm_mask_cmp_epi64_mask::<_MM_CMPINT_LT>(mask, a, b);
        assert_eq!(r, 0b00000010);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_i32gather_pd() {
        let mut arr = [0f64; 128];
        for i in 0..128 {
            arr[i] = i as f64;
        }
        // A multiplier of 8 is word-addressing
        let index = _mm256_setr_epi32(0, 16, 32, 48, 64, 80, 96, 112);
        let r = _mm512_i32gather_pd::<8>(index, arr.as_ptr() as *const u8);
        assert_eq_m512d(r, _mm512_setr_pd(0., 16., 32., 48., 64., 80., 96., 112.));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_i32gather_pd() {
        let mut arr = [0f64; 128];
        for i in 0..128 {
            arr[i] = i as f64;
        }
        let src = _mm512_set1_pd(2.);
        let mask = 0b10101010;
        let index = _mm256_setr_epi32(0, 16, 32, 48, 64, 80, 96, 112);
        // A multiplier of 8 is word-addressing
        let r = _mm512_mask_i32gather_pd::<8>(src, mask, index, arr.as_ptr() as *const u8);
        assert_eq_m512d(r, _mm512_setr_pd(2., 16., 2., 48., 2., 80., 2., 112.));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_i64gather_pd() {
        let mut arr = [0f64; 128];
        for i in 0..128 {
            arr[i] = i as f64;
        }
        // A multiplier of 8 is word-addressing
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        let r = _mm512_i64gather_pd::<8>(index, arr.as_ptr() as *const u8);
        assert_eq_m512d(r, _mm512_setr_pd(0., 16., 32., 48., 64., 80., 96., 112.));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_i64gather_pd() {
        let mut arr = [0f64; 128];
        for i in 0..128 {
            arr[i] = i as f64;
        }
        let src = _mm512_set1_pd(2.);
        let mask = 0b10101010;
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        // A multiplier of 8 is word-addressing
        let r = _mm512_mask_i64gather_pd::<8>(src, mask, index, arr.as_ptr() as *const u8);
        assert_eq_m512d(r, _mm512_setr_pd(2., 16., 2., 48., 2., 80., 2., 112.));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_i64gather_ps() {
        let mut arr = [0f32; 128];
        for i in 0..128 {
            arr[i] = i as f32;
        }
        // A multiplier of 4 is word-addressing
        #[rustfmt::skip]
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        let r = _mm512_i64gather_ps::<4>(index, arr.as_ptr() as *const u8);
        assert_eq_m256(r, _mm256_setr_ps(0., 16., 32., 48., 64., 80., 96., 112.));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_i64gather_ps() {
        let mut arr = [0f32; 128];
        for i in 0..128 {
            arr[i] = i as f32;
        }
        let src = _mm256_set1_ps(2.);
        let mask = 0b10101010;
        #[rustfmt::skip]
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        // A multiplier of 4 is word-addressing
        let r = _mm512_mask_i64gather_ps::<4>(src, mask, index, arr.as_ptr() as *const u8);
        assert_eq_m256(r, _mm256_setr_ps(2., 16., 2., 48., 2., 80., 2., 112.));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_i32gather_epi64() {
        let mut arr = [0i64; 128];
        for i in 0..128i64 {
            arr[i as usize] = i;
        }
        // A multiplier of 8 is word-addressing
        let index = _mm256_setr_epi32(0, 16, 32, 48, 64, 80, 96, 112);
        let r = _mm512_i32gather_epi64::<8>(index, arr.as_ptr() as *const u8);
        assert_eq_m512i(r, _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_i32gather_epi64() {
        let mut arr = [0i64; 128];
        for i in 0..128i64 {
            arr[i as usize] = i;
        }
        let src = _mm512_set1_epi64(2);
        let mask = 0b10101010;
        let index = _mm256_setr_epi32(0, 16, 32, 48, 64, 80, 96, 112);
        // A multiplier of 8 is word-addressing
        let r = _mm512_mask_i32gather_epi64::<8>(src, mask, index, arr.as_ptr() as *const u8);
        assert_eq_m512i(r, _mm512_setr_epi64(2, 16, 2, 48, 2, 80, 2, 112));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_i64gather_epi64() {
        let mut arr = [0i64; 128];
        for i in 0..128i64 {
            arr[i as usize] = i;
        }
        // A multiplier of 8 is word-addressing
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        let r = _mm512_i64gather_epi64::<8>(index, arr.as_ptr() as *const u8);
        assert_eq_m512i(r, _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_i64gather_epi64() {
        let mut arr = [0i64; 128];
        for i in 0..128i64 {
            arr[i as usize] = i;
        }
        let src = _mm512_set1_epi64(2);
        let mask = 0b10101010;
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        // A multiplier of 8 is word-addressing
        let r = _mm512_mask_i64gather_epi64::<8>(src, mask, index, arr.as_ptr() as *const u8);
        assert_eq_m512i(r, _mm512_setr_epi64(2, 16, 2, 48, 2, 80, 2, 112));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_i64gather_epi32() {
        let mut arr = [0i64; 128];
        for i in 0..128i64 {
            arr[i as usize] = i;
        }
        // A multiplier of 8 is word-addressing
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        let r = _mm512_i64gather_epi32::<8>(index, arr.as_ptr() as *const u8);
        assert_eq_m256i(r, _mm256_setr_epi32(0, 16, 32, 48, 64, 80, 96, 112));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_i64gather_epi32() {
        let mut arr = [0i64; 128];
        for i in 0..128i64 {
            arr[i as usize] = i;
        }
        let src = _mm256_set1_epi32(2);
        let mask = 0b10101010;
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        // A multiplier of 8 is word-addressing
        let r = _mm512_mask_i64gather_epi32::<8>(src, mask, index, arr.as_ptr() as *const u8);
        assert_eq_m256i(r, _mm256_setr_epi32(2, 16, 2, 48, 2, 80, 2, 112));
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_i32scatter_pd() {
        let mut arr = [0f64; 128];
        let index = _mm256_setr_epi32(0, 16, 32, 48, 64, 80, 96, 112);
        let src = _mm512_setr_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        // A multiplier of 8 is word-addressing
        _mm512_i32scatter_pd::<8>(arr.as_mut_ptr() as *mut u8, index, src);
        let mut expected = [0f64; 128];
        for i in 0..8 {
            expected[i * 16] = (i + 1) as f64;
        }
        assert_eq!(&arr[..], &expected[..],);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_i32scatter_pd() {
        let mut arr = [0f64; 128];
        let mask = 0b10101010;
        let index = _mm256_setr_epi32(0, 16, 32, 48, 64, 80, 96, 112);
        let src = _mm512_setr_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        // A multiplier of 8 is word-addressing
        _mm512_mask_i32scatter_pd::<8>(arr.as_mut_ptr() as *mut u8, mask, index, src);
        let mut expected = [0f64; 128];
        for i in 0..4 {
            expected[i * 32 + 16] = 2. * (i + 1) as f64;
        }
        assert_eq!(&arr[..], &expected[..],);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_i64scatter_pd() {
        let mut arr = [0f64; 128];
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        let src = _mm512_setr_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        // A multiplier of 8 is word-addressing
        _mm512_i64scatter_pd::<8>(arr.as_mut_ptr() as *mut u8, index, src);
        let mut expected = [0f64; 128];
        for i in 0..8 {
            expected[i * 16] = (i + 1) as f64;
        }
        assert_eq!(&arr[..], &expected[..],);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_i64scatter_pd() {
        let mut arr = [0f64; 128];
        let mask = 0b10101010;
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        let src = _mm512_setr_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        // A multiplier of 8 is word-addressing
        _mm512_mask_i64scatter_pd::<8>(arr.as_mut_ptr() as *mut u8, mask, index, src);
        let mut expected = [0f64; 128];
        for i in 0..4 {
            expected[i * 32 + 16] = 2. * (i + 1) as f64;
        }
        assert_eq!(&arr[..], &expected[..],);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_i64scatter_ps() {
        let mut arr = [0f32; 128];
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        let src = _mm256_setr_ps(1., 2., 3., 4., 5., 6., 7., 8.);
        // A multiplier of 4 is word-addressing
        _mm512_i64scatter_ps::<4>(arr.as_mut_ptr() as *mut u8, index, src);
        let mut expected = [0f32; 128];
        for i in 0..8 {
            expected[i * 16] = (i + 1) as f32;
        }
        assert_eq!(&arr[..], &expected[..],);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_i64scatter_ps() {
        let mut arr = [0f32; 128];
        let mask = 0b10101010;
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        let src = _mm256_setr_ps(1., 2., 3., 4., 5., 6., 7., 8.);
        // A multiplier of 4 is word-addressing
        _mm512_mask_i64scatter_ps::<4>(arr.as_mut_ptr() as *mut u8, mask, index, src);
        let mut expected = [0f32; 128];
        for i in 0..4 {
            expected[i * 32 + 16] = 2. * (i + 1) as f32;
        }
        assert_eq!(&arr[..], &expected[..],);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_i32scatter_epi64() {
        let mut arr = [0i64; 128];
        let index = _mm256_setr_epi32(0, 16, 32, 48, 64, 80, 96, 112);
        let src = _mm512_setr_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        // A multiplier of 8 is word-addressing
        _mm512_i32scatter_epi64::<8>(arr.as_mut_ptr() as *mut u8, index, src);
        let mut expected = [0i64; 128];
        for i in 0..8 {
            expected[i * 16] = (i + 1) as i64;
        }
        assert_eq!(&arr[..], &expected[..],);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_i32scatter_epi64() {
        let mut arr = [0i64; 128];
        let mask = 0b10101010;
        let index = _mm256_setr_epi32(0, 16, 32, 48, 64, 80, 96, 112);
        let src = _mm512_setr_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        // A multiplier of 8 is word-addressing
        _mm512_mask_i32scatter_epi64::<8>(arr.as_mut_ptr() as *mut u8, mask, index, src);
        let mut expected = [0i64; 128];
        for i in 0..4 {
            expected[i * 32 + 16] = 2 * (i + 1) as i64;
        }
        assert_eq!(&arr[..], &expected[..],);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_i64scatter_epi64() {
        let mut arr = [0i64; 128];
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        let src = _mm512_setr_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        // A multiplier of 8 is word-addressing
        _mm512_i64scatter_epi64::<8>(arr.as_mut_ptr() as *mut u8, index, src);
        let mut expected = [0i64; 128];
        for i in 0..8 {
            expected[i * 16] = (i + 1) as i64;
        }
        assert_eq!(&arr[..], &expected[..],);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_i64scatter_epi64() {
        let mut arr = [0i64; 128];
        let mask = 0b10101010;
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        let src = _mm512_setr_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        // A multiplier of 8 is word-addressing
        _mm512_mask_i64scatter_epi64::<8>(arr.as_mut_ptr() as *mut u8, mask, index, src);
        let mut expected = [0i64; 128];
        for i in 0..4 {
            expected[i * 32 + 16] = 2 * (i + 1) as i64;
        }
        assert_eq!(&arr[..], &expected[..],);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_i64scatter_epi32() {
        let mut arr = [0i32; 128];
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        let src = _mm256_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8);
        // A multiplier of 4 is word-addressing
        _mm512_i64scatter_epi32::<4>(arr.as_mut_ptr() as *mut u8, index, src);
        let mut expected = [0i32; 128];
        for i in 0..8 {
            expected[i * 16] = (i + 1) as i32;
        }
        assert_eq!(&arr[..], &expected[..],);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_i64scatter_epi32() {
        let mut arr = [0i32; 128];
        let mask = 0b10101010;
        let index = _mm512_setr_epi64(0, 16, 32, 48, 64, 80, 96, 112);
        let src = _mm256_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8);
        // A multiplier of 4 is word-addressing
        _mm512_mask_i64scatter_epi32::<4>(arr.as_mut_ptr() as *mut u8, mask, index, src);
        let mut expected = [0i32; 128];
        for i in 0..4 {
            expected[i * 32 + 16] = 2 * (i + 1) as i32;
        }
        assert_eq!(&arr[..], &expected[..],);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_rol_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 63, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let r = _mm512_rol_epi64::<1>(a);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 0, 1 << 33, 1 << 33, 1 << 33,
            1 << 33, 1 << 33, 1 << 33, 1 << 33,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_rol_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 63, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let r = _mm512_mask_rol_epi64::<1>(a, 0, a);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_rol_epi64::<1>(a, 0b11111111, a);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 0,  1 << 33, 1 << 33, 1 << 33,
            1 << 33, 1 << 33, 1 << 33, 1 << 33,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_rol_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 63,
        );
        let r = _mm512_maskz_rol_epi64::<1>(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_rol_epi64::<1>(0b00001111, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 1 << 33, 1 << 33, 1 << 33, 1 << 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_rol_epi64() {
        let a = _mm256_set_epi64x(1 << 63, 1 << 32, 1 << 32, 1 << 32);
        let r = _mm256_rol_epi64::<1>(a);
        let e = _mm256_set_epi64x(1 << 0, 1 << 33, 1 << 33, 1 << 33);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_rol_epi64() {
        let a = _mm256_set_epi64x(1 << 63, 1 << 32, 1 << 32, 1 << 32);
        let r = _mm256_mask_rol_epi64::<1>(a, 0, a);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_rol_epi64::<1>(a, 0b00001111, a);
        let e = _mm256_set_epi64x(1 << 0, 1 << 33, 1 << 33, 1 << 33);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_rol_epi64() {
        let a = _mm256_set_epi64x(1 << 63, 1 << 32, 1 << 32, 1 << 32);
        let r = _mm256_maskz_rol_epi64::<1>(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_rol_epi64::<1>(0b00001111, a);
        let e = _mm256_set_epi64x(1 << 0, 1 << 33, 1 << 33, 1 << 33);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_rol_epi64() {
        let a = _mm_set_epi64x(1 << 63, 1 << 32);
        let r = _mm_rol_epi64::<1>(a);
        let e = _mm_set_epi64x(1 << 0, 1 << 33);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_rol_epi64() {
        let a = _mm_set_epi64x(1 << 63, 1 << 32);
        let r = _mm_mask_rol_epi64::<1>(a, 0, a);
        assert_eq_m128i(r, a);
        let r = _mm_mask_rol_epi64::<1>(a, 0b00000011, a);
        let e = _mm_set_epi64x(1 << 0, 1 << 33);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_rol_epi64() {
        let a = _mm_set_epi64x(1 << 63, 1 << 32);
        let r = _mm_maskz_rol_epi64::<1>(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_rol_epi64::<1>(0b00000011, a);
        let e = _mm_set_epi64x(1 << 0, 1 << 33);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_ror_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 0,  1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let r = _mm512_ror_epi64::<1>(a);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 63, 1 << 31, 1 << 31, 1 << 31,
            1 << 31, 1 << 31, 1 << 31, 1 << 31,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_ror_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 0,  1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let r = _mm512_mask_ror_epi64::<1>(a, 0, a);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_ror_epi64::<1>(a, 0b11111111, a);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 63, 1 << 31, 1 << 31, 1 << 31,
            1 << 31, 1 << 31, 1 << 31, 1 << 31,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_ror_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 0,
        );
        let r = _mm512_maskz_ror_epi64::<1>(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_ror_epi64::<1>(0b00001111, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 1 << 31, 1 << 31, 1 << 31, 1 << 63);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_ror_epi64() {
        let a = _mm256_set_epi64x(1 << 0, 1 << 32, 1 << 32, 1 << 32);
        let r = _mm256_ror_epi64::<1>(a);
        let e = _mm256_set_epi64x(1 << 63, 1 << 31, 1 << 31, 1 << 31);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_ror_epi64() {
        let a = _mm256_set_epi64x(1 << 0, 1 << 32, 1 << 32, 1 << 32);
        let r = _mm256_mask_ror_epi64::<1>(a, 0, a);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_ror_epi64::<1>(a, 0b00001111, a);
        let e = _mm256_set_epi64x(1 << 63, 1 << 31, 1 << 31, 1 << 31);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_ror_epi64() {
        let a = _mm256_set_epi64x(1 << 0, 1 << 32, 1 << 32, 1 << 32);
        let r = _mm256_maskz_ror_epi64::<1>(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_ror_epi64::<1>(0b00001111, a);
        let e = _mm256_set_epi64x(1 << 63, 1 << 31, 1 << 31, 1 << 31);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_ror_epi64() {
        let a = _mm_set_epi64x(1 << 0, 1 << 32);
        let r = _mm_ror_epi64::<1>(a);
        let e = _mm_set_epi64x(1 << 63, 1 << 31);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_ror_epi64() {
        let a = _mm_set_epi64x(1 << 0, 1 << 32);
        let r = _mm_mask_ror_epi64::<1>(a, 0, a);
        assert_eq_m128i(r, a);
        let r = _mm_mask_ror_epi64::<1>(a, 0b00000011, a);
        let e = _mm_set_epi64x(1 << 63, 1 << 31);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_ror_epi64() {
        let a = _mm_set_epi64x(1 << 0, 1 << 32);
        let r = _mm_maskz_ror_epi64::<1>(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_ror_epi64::<1>(0b00000011, a);
        let e = _mm_set_epi64x(1 << 63, 1 << 31);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_slli_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 63, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let r = _mm512_slli_epi64::<1>(a);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            0, 1 << 33, 1 << 33, 1 << 33,
            1 << 33, 1 << 33, 1 << 33, 1 << 33,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_slli_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 63, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let r = _mm512_mask_slli_epi64::<1>(a, 0, a);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_slli_epi64::<1>(a, 0b11111111, a);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            0, 1 << 33, 1 << 33, 1 << 33,
            1 << 33, 1 << 33, 1 << 33, 1 << 33,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_slli_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 63,
        );
        let r = _mm512_maskz_slli_epi64::<1>(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_slli_epi64::<1>(0b00001111, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 1 << 33, 1 << 33, 1 << 33, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_slli_epi64() {
        let a = _mm256_set_epi64x(1 << 63, 1 << 32, 1 << 32, 1 << 32);
        let r = _mm256_mask_slli_epi64::<1>(a, 0, a);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_slli_epi64::<1>(a, 0b00001111, a);
        let e = _mm256_set_epi64x(0, 1 << 33, 1 << 33, 1 << 33);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_slli_epi64() {
        let a = _mm256_set_epi64x(1 << 63, 1 << 32, 1 << 32, 1 << 32);
        let r = _mm256_maskz_slli_epi64::<1>(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_slli_epi64::<1>(0b00001111, a);
        let e = _mm256_set_epi64x(0, 1 << 33, 1 << 33, 1 << 33);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_slli_epi64() {
        let a = _mm_set_epi64x(1 << 63, 1 << 32);
        let r = _mm_mask_slli_epi64::<1>(a, 0, a);
        assert_eq_m128i(r, a);
        let r = _mm_mask_slli_epi64::<1>(a, 0b00000011, a);
        let e = _mm_set_epi64x(0, 1 << 33);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_slli_epi64() {
        let a = _mm_set_epi64x(1 << 63, 1 << 32);
        let r = _mm_maskz_slli_epi64::<1>(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_slli_epi64::<1>(0b00000011, a);
        let e = _mm_set_epi64x(0, 1 << 33);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_srli_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 0, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let r = _mm512_srli_epi64::<1>(a);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            0, 1 << 31, 1 << 31, 1 << 31,
            1 << 31, 1 << 31, 1 << 31, 1 << 31,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_srli_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 0, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let r = _mm512_mask_srli_epi64::<1>(a, 0, a);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_srli_epi64::<1>(a, 0b11111111, a);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            0, 1 << 31, 1 << 31, 1 << 31,
            1 << 31, 1 << 31, 1 << 31, 1 << 31,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_srli_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 0,
        );
        let r = _mm512_maskz_srli_epi64::<1>(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_srli_epi64::<1>(0b00001111, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 1 << 31, 1 << 31, 1 << 31, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_srli_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let r = _mm256_mask_srli_epi64::<1>(a, 0, a);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_srli_epi64::<1>(a, 0b00001111, a);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_srli_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let r = _mm256_maskz_srli_epi64::<1>(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_srli_epi64::<1>(0b00001111, a);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_srli_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let r = _mm_mask_srli_epi64::<1>(a, 0, a);
        assert_eq_m128i(r, a);
        let r = _mm_mask_srli_epi64::<1>(a, 0b00000011, a);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_srli_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let r = _mm_maskz_srli_epi64::<1>(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_srli_epi64::<1>(0b00000011, a);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_rolv_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 63, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let b = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_rolv_epi64(a, b);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 32, 1 << 0,  1 << 34, 1 << 35,
            1 << 36, 1 << 37, 1 << 38, 1 << 39,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_rolv_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 63, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let b = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_mask_rolv_epi64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_rolv_epi64(a, 0b11111111, a, b);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 32, 1 << 0,  1 << 34, 1 << 35,
            1 << 36, 1 << 37, 1 << 38, 1 << 39,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_rolv_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 62,
        );
        let b = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 2);
        let r = _mm512_maskz_rolv_epi64(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_rolv_epi64(0b00001111, a, b);
        let e = _mm512_set_epi64(0, 0, 0, 0, 1 << 36, 1 << 37, 1 << 38, 1 << 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_rolv_epi64() {
        let a = _mm256_set_epi64x(1 << 32, 1 << 63, 1 << 32, 1 << 32);
        let b = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_rolv_epi64(a, b);
        let e = _mm256_set_epi64x(1 << 32, 1 << 0, 1 << 34, 1 << 35);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_rolv_epi64() {
        let a = _mm256_set_epi64x(1 << 32, 1 << 63, 1 << 32, 1 << 32);
        let b = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_mask_rolv_epi64(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_rolv_epi64(a, 0b00001111, a, b);
        let e = _mm256_set_epi64x(1 << 32, 1 << 0, 1 << 34, 1 << 35);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_rolv_epi64() {
        let a = _mm256_set_epi64x(1 << 32, 1 << 63, 1 << 32, 1 << 32);
        let b = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_maskz_rolv_epi64(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_rolv_epi64(0b00001111, a, b);
        let e = _mm256_set_epi64x(1 << 32, 1 << 0, 1 << 34, 1 << 35);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_rolv_epi64() {
        let a = _mm_set_epi64x(1 << 32, 1 << 63);
        let b = _mm_set_epi64x(0, 1);
        let r = _mm_rolv_epi64(a, b);
        let e = _mm_set_epi64x(1 << 32, 1 << 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_rolv_epi64() {
        let a = _mm_set_epi64x(1 << 32, 1 << 63);
        let b = _mm_set_epi64x(0, 1);
        let r = _mm_mask_rolv_epi64(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_rolv_epi64(a, 0b00000011, a, b);
        let e = _mm_set_epi64x(1 << 32, 1 << 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_rolv_epi64() {
        let a = _mm_set_epi64x(1 << 32, 1 << 63);
        let b = _mm_set_epi64x(0, 1);
        let r = _mm_maskz_rolv_epi64(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_rolv_epi64(0b00000011, a, b);
        let e = _mm_set_epi64x(1 << 32, 1 << 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_rorv_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 0, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let b = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_rorv_epi64(a, b);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 32, 1 << 63, 1 << 30, 1 << 29,
            1 << 28, 1 << 27, 1 << 26, 1 << 25,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_rorv_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 0, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let b = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_mask_rorv_epi64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_rorv_epi64(a, 0b11111111, a, b);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 32, 1 << 63, 1 << 30, 1 << 29,
            1 << 28, 1 << 27, 1 << 26, 1 << 25,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_rorv_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 0,
        );
        let b = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 2);
        let r = _mm512_maskz_rorv_epi64(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_rorv_epi64(0b00001111, a, b);
        let e = _mm512_set_epi64(0, 0, 0, 0, 1 << 28, 1 << 27, 1 << 26, 1 << 62);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_rorv_epi64() {
        let a = _mm256_set_epi64x(1 << 32, 1 << 0, 1 << 32, 1 << 32);
        let b = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_rorv_epi64(a, b);
        let e = _mm256_set_epi64x(1 << 32, 1 << 63, 1 << 30, 1 << 29);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_rorv_epi64() {
        let a = _mm256_set_epi64x(1 << 32, 1 << 0, 1 << 32, 1 << 32);
        let b = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_mask_rorv_epi64(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_rorv_epi64(a, 0b00001111, a, b);
        let e = _mm256_set_epi64x(1 << 32, 1 << 63, 1 << 30, 1 << 29);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_rorv_epi64() {
        let a = _mm256_set_epi64x(1 << 32, 1 << 0, 1 << 32, 1 << 32);
        let b = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_maskz_rorv_epi64(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_rorv_epi64(0b00001111, a, b);
        let e = _mm256_set_epi64x(1 << 32, 1 << 63, 1 << 30, 1 << 29);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_rorv_epi64() {
        let a = _mm_set_epi64x(1 << 32, 1 << 0);
        let b = _mm_set_epi64x(0, 1);
        let r = _mm_rorv_epi64(a, b);
        let e = _mm_set_epi64x(1 << 32, 1 << 63);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_rorv_epi64() {
        let a = _mm_set_epi64x(1 << 32, 1 << 0);
        let b = _mm_set_epi64x(0, 1);
        let r = _mm_mask_rorv_epi64(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_rorv_epi64(a, 0b00000011, a, b);
        let e = _mm_set_epi64x(1 << 32, 1 << 63);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_rorv_epi64() {
        let a = _mm_set_epi64x(1 << 32, 1 << 0);
        let b = _mm_set_epi64x(0, 1);
        let r = _mm_maskz_rorv_epi64(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_rorv_epi64(0b00000011, a, b);
        let e = _mm_set_epi64x(1 << 32, 1 << 63);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_sllv_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 63, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let count = _mm512_set_epi64(0, 2, 2, 3, 4, 5, 6, 7);
        let r = _mm512_sllv_epi64(a, count);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 32, 0, 1 << 34, 1 << 35,
            1 << 36, 1 << 37, 1 << 38, 1 << 39,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_sllv_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 32, 1 << 63, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let count = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_mask_sllv_epi64(a, 0, a, count);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_sllv_epi64(a, 0b11111111, a, count);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 32, 1 << 33, 0, 1 << 35,
            1 << 36, 1 << 37, 1 << 38, 1 << 39,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_sllv_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 63,
        );
        let count = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 1);
        let r = _mm512_maskz_sllv_epi64(0, a, count);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_sllv_epi64(0b00001111, a, count);
        let e = _mm512_set_epi64(0, 0, 0, 0, 1 << 36, 1 << 37, 1 << 38, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_sllv_epi64() {
        let a = _mm256_set_epi64x(1 << 32, 1 << 32, 1 << 63, 1 << 32);
        let count = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_mask_sllv_epi64(a, 0, a, count);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_sllv_epi64(a, 0b00001111, a, count);
        let e = _mm256_set_epi64x(1 << 32, 1 << 33, 0, 1 << 35);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_sllv_epi64() {
        let a = _mm256_set_epi64x(1 << 32, 1 << 32, 1 << 63, 1 << 32);
        let count = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_maskz_sllv_epi64(0, a, count);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_sllv_epi64(0b00001111, a, count);
        let e = _mm256_set_epi64x(1 << 32, 1 << 33, 0, 1 << 35);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_sllv_epi64() {
        let a = _mm_set_epi64x(1 << 63, 1 << 32);
        let count = _mm_set_epi64x(2, 3);
        let r = _mm_mask_sllv_epi64(a, 0, a, count);
        assert_eq_m128i(r, a);
        let r = _mm_mask_sllv_epi64(a, 0b00000011, a, count);
        let e = _mm_set_epi64x(0, 1 << 35);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_sllv_epi64() {
        let a = _mm_set_epi64x(1 << 63, 1 << 32);
        let count = _mm_set_epi64x(2, 3);
        let r = _mm_maskz_sllv_epi64(0, a, count);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_sllv_epi64(0b00000011, a, count);
        let e = _mm_set_epi64x(0, 1 << 35);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_srlv_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 0, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let count = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_srlv_epi64(a, count);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 32, 0, 1 << 30, 1 << 29,
            1 << 28, 1 << 27, 1 << 26, 1 << 25,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_srlv_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 0, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let count = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_mask_srlv_epi64(a, 0, a, count);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_srlv_epi64(a, 0b11111111, a, count);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 32, 0, 1 << 30, 1 << 29,
            1 << 28, 1 << 27, 1 << 26, 1 << 25,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_srlv_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 0,
        );
        let count = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_maskz_srlv_epi64(0, a, count);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_srlv_epi64(0b00001111, a, count);
        let e = _mm512_set_epi64(0, 0, 0, 0, 1 << 28, 1 << 27, 1 << 26, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_srlv_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let count = _mm256_set1_epi64x(1);
        let r = _mm256_mask_srlv_epi64(a, 0, a, count);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_srlv_epi64(a, 0b00001111, a, count);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_srlv_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let count = _mm256_set1_epi64x(1);
        let r = _mm256_maskz_srlv_epi64(0, a, count);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_srlv_epi64(0b00001111, a, count);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_srlv_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let count = _mm_set1_epi64x(1);
        let r = _mm_mask_srlv_epi64(a, 0, a, count);
        assert_eq_m128i(r, a);
        let r = _mm_mask_srlv_epi64(a, 0b00000011, a, count);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_srlv_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let count = _mm_set1_epi64x(1);
        let r = _mm_maskz_srlv_epi64(0, a, count);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_srlv_epi64(0b00000011, a, count);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_sll_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 63, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let count = _mm_set_epi64x(0, 1);
        let r = _mm512_sll_epi64(a, count);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            0, 1 << 33, 1 << 33, 1 << 33,
            1 << 33, 1 << 33, 1 << 33, 1 << 33,
        );
        assert_eq_m512i(r, e);
        let count = _mm_set_epi64x(1, 0);
        let r = _mm512_sll_epi64(a, count);
        assert_eq_m512i(r, a);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_sll_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 63, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let count = _mm_set_epi64x(0, 1);
        let r = _mm512_mask_sll_epi64(a, 0, a, count);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_sll_epi64(a, 0b11111111, a, count);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            0, 1 << 33, 1 << 33, 1 << 33,
            1 << 33, 1 << 33, 1 << 33, 1 << 33,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_sll_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 63,
        );
        let count = _mm_set_epi64x(0, 1);
        let r = _mm512_maskz_sll_epi64(0, a, count);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_sll_epi64(0b00001111, a, count);
        let e = _mm512_set_epi64(0, 0, 0, 0, 1 << 33, 1 << 33, 1 << 33, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_sll_epi64() {
        let a = _mm256_set_epi64x(1 << 63, 1 << 32, 1 << 32, 1 << 32);
        let count = _mm_set_epi64x(0, 1);
        let r = _mm256_mask_sll_epi64(a, 0, a, count);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_sll_epi64(a, 0b00001111, a, count);
        let e = _mm256_set_epi64x(0, 1 << 33, 1 << 33, 1 << 33);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_sll_epi64() {
        let a = _mm256_set_epi64x(1 << 63, 1 << 32, 1 << 32, 1 << 32);
        let count = _mm_set_epi64x(0, 1);
        let r = _mm256_maskz_sll_epi64(0, a, count);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_sll_epi64(0b00001111, a, count);
        let e = _mm256_set_epi64x(0, 1 << 33, 1 << 33, 1 << 33);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_sll_epi64() {
        let a = _mm_set_epi64x(1 << 63, 1 << 32);
        let count = _mm_set_epi64x(0, 1);
        let r = _mm_mask_sll_epi64(a, 0, a, count);
        assert_eq_m128i(r, a);
        let r = _mm_mask_sll_epi64(a, 0b00000011, a, count);
        let e = _mm_set_epi64x(0, 1 << 33);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_sll_epi64() {
        let a = _mm_set_epi64x(1 << 63, 1 << 32);
        let count = _mm_set_epi64x(0, 1);
        let r = _mm_maskz_sll_epi64(0, a, count);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_sll_epi64(0b00000011, a, count);
        let e = _mm_set_epi64x(0, 1 << 33);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_srl_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 0, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let count = _mm_set_epi64x(0, 1);
        let r = _mm512_srl_epi64(a, count);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            0, 1 << 31, 1 << 31, 1 << 31,
            1 << 31, 1 << 31, 1 << 31, 1 << 31,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_srl_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 0, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
        );
        let count = _mm_set_epi64x(0, 1);
        let r = _mm512_mask_srl_epi64(a, 0, a, count);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_srl_epi64(a, 0b11111111, a, count);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            0, 1 << 31, 1 << 31, 1 << 31,
            1 << 31, 1 << 31, 1 << 31, 1 << 31,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_srl_epi64() {
        #[rustfmt::skip]
        let a = _mm512_set_epi64(
            1 << 32, 1 << 32, 1 << 32, 1 << 32,
            1 << 32, 1 << 32, 1 << 32, 1 << 0,
        );
        let count = _mm_set_epi64x(0, 1);
        let r = _mm512_maskz_srl_epi64(0, a, count);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_srl_epi64(0b00001111, a, count);
        let e = _mm512_set_epi64(0, 0, 0, 0, 1 << 31, 1 << 31, 1 << 31, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_srl_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let count = _mm_set_epi64x(0, 1);
        let r = _mm256_mask_srl_epi64(a, 0, a, count);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_srl_epi64(a, 0b00001111, a, count);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_srl_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let count = _mm_set_epi64x(0, 1);
        let r = _mm256_maskz_srl_epi64(0, a, count);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_srl_epi64(0b00001111, a, count);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_srl_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let count = _mm_set_epi64x(0, 1);
        let r = _mm_mask_srl_epi64(a, 0, a, count);
        assert_eq_m128i(r, a);
        let r = _mm_mask_srl_epi64(a, 0b00000011, a, count);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_srl_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let count = _mm_set_epi64x(0, 1);
        let r = _mm_maskz_srl_epi64(0, a, count);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_srl_epi64(0b00000011, a, count);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_sra_epi64() {
        let a = _mm512_set_epi64(1, -8, 0, 0, 0, 0, 15, -16);
        let count = _mm_set_epi64x(0, 2);
        let r = _mm512_sra_epi64(a, count);
        let e = _mm512_set_epi64(0, -2, 0, 0, 0, 0, 3, -4);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_sra_epi64() {
        let a = _mm512_set_epi64(1, -8, 0, 0, 0, 0, 15, -16);
        let count = _mm_set_epi64x(0, 2);
        let r = _mm512_mask_sra_epi64(a, 0, a, count);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_sra_epi64(a, 0b11111111, a, count);
        let e = _mm512_set_epi64(0, -2, 0, 0, 0, 0, 3, -4);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_sra_epi64() {
        let a = _mm512_set_epi64(1, -8, 0, 0, 0, 0, 15, -16);
        let count = _mm_set_epi64x(0, 2);
        let r = _mm512_maskz_sra_epi64(0, a, count);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_sra_epi64(0b00001111, a, count);
        let e = _mm512_set_epi64(0, 0, 0, 0, 0, 0, 3, -4);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_sra_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let count = _mm_set_epi64x(0, 1);
        let r = _mm256_sra_epi64(a, count);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_sra_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let count = _mm_set_epi64x(0, 1);
        let r = _mm256_mask_sra_epi64(a, 0, a, count);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_sra_epi64(a, 0b00001111, a, count);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_sra_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let count = _mm_set_epi64x(0, 1);
        let r = _mm256_maskz_sra_epi64(0, a, count);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_sra_epi64(0b00001111, a, count);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_sra_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let count = _mm_set_epi64x(0, 1);
        let r = _mm_sra_epi64(a, count);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_sra_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let count = _mm_set_epi64x(0, 1);
        let r = _mm_mask_sra_epi64(a, 0, a, count);
        assert_eq_m128i(r, a);
        let r = _mm_mask_sra_epi64(a, 0b00000011, a, count);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_sra_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let count = _mm_set_epi64x(0, 1);
        let r = _mm_maskz_sra_epi64(0, a, count);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_sra_epi64(0b00000011, a, count);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_srav_epi64() {
        let a = _mm512_set_epi64(1, -8, 0, 0, 0, 0, 15, -16);
        let count = _mm512_set_epi64(2, 2, 0, 0, 0, 0, 2, 1);
        let r = _mm512_srav_epi64(a, count);
        let e = _mm512_set_epi64(0, -2, 0, 0, 0, 0, 3, -8);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_srav_epi64() {
        let a = _mm512_set_epi64(1, -8, 0, 0, 0, 0, 15, -16);
        let count = _mm512_set_epi64(2, 2, 0, 0, 0, 0, 2, 1);
        let r = _mm512_mask_srav_epi64(a, 0, a, count);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_srav_epi64(a, 0b11111111, a, count);
        let e = _mm512_set_epi64(0, -2, 0, 0, 0, 0, 3, -8);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_srav_epi64() {
        let a = _mm512_set_epi64(1, -8, 0, 0, 0, 0, 15, -16);
        let count = _mm512_set_epi64(2, 2, 0, 0, 0, 0, 2, 1);
        let r = _mm512_maskz_srav_epi64(0, a, count);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_srav_epi64(0b00001111, a, count);
        let e = _mm512_set_epi64(0, 0, 0, 0, 0, 0, 3, -8);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_srav_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let count = _mm256_set1_epi64x(1);
        let r = _mm256_srav_epi64(a, count);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_srav_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let count = _mm256_set1_epi64x(1);
        let r = _mm256_mask_srav_epi64(a, 0, a, count);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_srav_epi64(a, 0b00001111, a, count);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_srav_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let count = _mm256_set1_epi64x(1);
        let r = _mm256_maskz_srav_epi64(0, a, count);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_srav_epi64(0b00001111, a, count);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_srav_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let count = _mm_set1_epi64x(1);
        let r = _mm_srav_epi64(a, count);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_srav_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let count = _mm_set1_epi64x(1);
        let r = _mm_mask_srav_epi64(a, 0, a, count);
        assert_eq_m128i(r, a);
        let r = _mm_mask_srav_epi64(a, 0b00000011, a, count);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_srav_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let count = _mm_set1_epi64x(1);
        let r = _mm_maskz_srav_epi64(0, a, count);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_srav_epi64(0b00000011, a, count);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_srai_epi64() {
        let a = _mm512_set_epi64(1, -4, 15, 0, 0, 0, 0, -16);
        let r = _mm512_srai_epi64::<2>(a);
        let e = _mm512_set_epi64(0, -1, 3, 0, 0, 0, 0, -4);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_srai_epi64() {
        let a = _mm512_set_epi64(1, -4, 15, 0, 0, 0, 0, -16);
        let r = _mm512_mask_srai_epi64::<2>(a, 0, a);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_srai_epi64::<2>(a, 0b11111111, a);
        let e = _mm512_set_epi64(0, -1, 3, 0, 0, 0, 0, -4);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_srai_epi64() {
        let a = _mm512_set_epi64(1, -4, 15, 0, 0, 0, 0, -16);
        let r = _mm512_maskz_srai_epi64::<2>(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_srai_epi64::<2>(0b00001111, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 0, 0, 0, -4);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_srai_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let r = _mm256_srai_epi64::<1>(a);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_srai_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let r = _mm256_mask_srai_epi64::<1>(a, 0, a);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_srai_epi64::<1>(a, 0b00001111, a);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_srai_epi64() {
        let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
        let r = _mm256_maskz_srai_epi64::<1>(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_srai_epi64::<1>(0b00001111, a);
        let e = _mm256_set_epi64x(1 << 4, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_srai_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let r = _mm_srai_epi64::<1>(a);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_srai_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let r = _mm_mask_srai_epi64::<1>(a, 0, a);
        assert_eq_m128i(r, a);
        let r = _mm_mask_srai_epi64::<1>(a, 0b00000011, a);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_srai_epi64() {
        let a = _mm_set_epi64x(1 << 5, 0);
        let r = _mm_maskz_srai_epi64::<1>(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_srai_epi64::<1>(0b00000011, a);
        let e = _mm_set_epi64x(1 << 4, 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_permute_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let r = _mm512_permute_pd::<0b11_11_11_11>(a);
        let e = _mm512_setr_pd(1., 1., 3., 3., 5., 5., 7., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_permute_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let r = _mm512_mask_permute_pd::<0b11_11_11_11>(a, 0, a);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_permute_pd::<0b11_11_11_11>(a, 0b11111111, a);
        let e = _mm512_setr_pd(1., 1., 3., 3., 5., 5., 7., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_permute_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let r = _mm512_maskz_permute_pd::<0b11_11_11_11>(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_permute_pd::<0b11_11_11_11>(0b11111111, a);
        let e = _mm512_setr_pd(1., 1., 3., 3., 5., 5., 7., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_permute_pd() {
        let a = _mm256_set_pd(3., 2., 1., 0.);
        let r = _mm256_mask_permute_pd::<0b11_11>(a, 0, a);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_permute_pd::<0b11_11>(a, 0b00001111, a);
        let e = _mm256_set_pd(3., 3., 1., 1.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_permute_pd() {
        let a = _mm256_set_pd(3., 2., 1., 0.);
        let r = _mm256_maskz_permute_pd::<0b11_11>(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_permute_pd::<0b11_11>(0b00001111, a);
        let e = _mm256_set_pd(3., 3., 1., 1.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_permute_pd() {
        let a = _mm_set_pd(1., 0.);
        let r = _mm_mask_permute_pd::<0b11>(a, 0, a);
        assert_eq_m128d(r, a);
        let r = _mm_mask_permute_pd::<0b11>(a, 0b00000011, a);
        let e = _mm_set_pd(1., 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_permute_pd() {
        let a = _mm_set_pd(1., 0.);
        let r = _mm_maskz_permute_pd::<0b11>(0, a);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_permute_pd::<0b11>(0b00000011, a);
        let e = _mm_set_pd(1., 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_permutex_epi64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_permutex_epi64::<0b11_11_11_11>(a);
        let e = _mm512_setr_epi64(3, 3, 3, 3, 7, 7, 7, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_permutex_epi64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_mask_permutex_epi64::<0b11_11_11_11>(a, 0, a);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_permutex_epi64::<0b11_11_11_11>(a, 0b11111111, a);
        let e = _mm512_setr_epi64(3, 3, 3, 3, 7, 7, 7, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_permutex_epi64() {
        let a = _mm512_setr_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_maskz_permutex_epi64::<0b11_11_11_11>(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_permutex_epi64::<0b11_11_11_11>(0b11111111, a);
        let e = _mm512_setr_epi64(3, 3, 3, 3, 7, 7, 7, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_permutex_epi64() {
        let a = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_permutex_epi64::<0b11_11_11_11>(a);
        let e = _mm256_set_epi64x(3, 3, 3, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_permutex_epi64() {
        let a = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_mask_permutex_epi64::<0b11_11_11_11>(a, 0, a);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_permutex_epi64::<0b11_11_11_11>(a, 0b00001111, a);
        let e = _mm256_set_epi64x(3, 3, 3, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm256_maskz_permutex_epi64() {
        let a = _mm256_set_epi64x(3, 2, 1, 0);
        let r = _mm256_maskz_permutex_epi64::<0b11_11_11_11>(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_permutex_epi64::<0b11_11_11_11>(0b00001111, a);
        let e = _mm256_set_epi64x(3, 3, 3, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_permutex_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let r = _mm512_permutex_pd::<0b11_11_11_11>(a);
        let e = _mm512_setr_pd(3., 3., 3., 3., 7., 7., 7., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_permutex_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let r = _mm512_mask_permutex_pd::<0b11_11_11_11>(a, 0, a);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_permutex_pd::<0b11_11_11_11>(a, 0b11111111, a);
        let e = _mm512_setr_pd(3., 3., 3., 3., 7., 7., 7., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_permutex_pd() {
        let a = _mm512_setr_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let r = _mm512_maskz_permutex_pd::<0b11_11_11_11>(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_permutex_pd::<0b11_11_11_11>(0b11111111, a);
        let e = _mm512_setr_pd(3., 3., 3., 3., 7., 7., 7., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_permutex_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let r = _mm256_permutex_pd::<0b11_11_11_11>(a);
        let e = _mm256_set_pd(0., 0., 0., 0.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_permutex_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let r = _mm256_mask_permutex_pd::<0b11_11_11_11>(a, 0, a);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_permutex_pd::<0b11_11_11_11>(a, 0b00001111, a);
        let e = _mm256_set_pd(0., 0., 0., 0.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_permutex_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let r = _mm256_maskz_permutex_pd::<0b11_11_11_11>(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_permutex_pd::<0b11_11_11_11>(0b00001111, a);
        let e = _mm256_set_pd(0., 0., 0., 0.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_permutevar_pd() {
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_set1_epi64(0b1);
        let r = _mm512_permutevar_pd(a, b);
        let e = _mm512_set_pd(1., 1., 3., 3., 5., 5., 7., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_permutevar_pd() {
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_set1_epi64(0b1);
        let r = _mm512_mask_permutevar_pd(a, 0, a, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_permutevar_pd(a, 0b11111111, a, b);
        let e = _mm512_set_pd(1., 1., 3., 3., 5., 5., 7., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_permutevar_pd() {
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let b = _mm512_set1_epi64(0b1);
        let r = _mm512_maskz_permutevar_pd(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_permutevar_pd(0b00001111, a, b);
        let e = _mm512_set_pd(0., 0., 0., 0., 5., 5., 7., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_permutevar_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let b = _mm256_set1_epi64x(0b1);
        let r = _mm256_mask_permutevar_pd(a, 0, a, b);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_permutevar_pd(a, 0b00001111, a, b);
        let e = _mm256_set_pd(1., 1., 3., 3.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_permutevar_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let b = _mm256_set1_epi64x(0b1);
        let r = _mm256_maskz_permutevar_pd(0, a, b);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_permutevar_pd(0b00001111, a, b);
        let e = _mm256_set_pd(1., 1., 3., 3.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_permutevar_pd() {
        let a = _mm_set_pd(0., 1.);
        let b = _mm_set1_epi64x(0b1);
        let r = _mm_mask_permutevar_pd(a, 0, a, b);
        assert_eq_m128d(r, a);
        let r = _mm_mask_permutevar_pd(a, 0b00000011, a, b);
        let e = _mm_set_pd(1., 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_permutevar_pd() {
        let a = _mm_set_pd(0., 1.);
        let b = _mm_set1_epi64x(0b1);
        let r = _mm_maskz_permutevar_pd(0, a, b);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_permutevar_pd(0b00000011, a, b);
        let e = _mm_set_pd(1., 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_permutexvar_epi64() {
        let idx = _mm512_set1_epi64(1);
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_permutexvar_epi64(idx, a);
        let e = _mm512_set1_epi64(6);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_permutexvar_epi64() {
        let idx = _mm512_set1_epi64(1);
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_mask_permutexvar_epi64(a, 0, idx, a);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_permutexvar_epi64(a, 0b11111111, idx, a);
        let e = _mm512_set1_epi64(6);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_permutexvar_epi64() {
        let idx = _mm512_set1_epi64(1);
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_maskz_permutexvar_epi64(0, idx, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_permutexvar_epi64(0b00001111, idx, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 6, 6, 6, 6);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_permutexvar_epi64() {
        let idx = _mm256_set1_epi64x(1);
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_permutexvar_epi64(idx, a);
        let e = _mm256_set1_epi64x(2);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_permutexvar_epi64() {
        let idx = _mm256_set1_epi64x(1);
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_mask_permutexvar_epi64(a, 0, idx, a);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_permutexvar_epi64(a, 0b00001111, idx, a);
        let e = _mm256_set1_epi64x(2);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_permutexvar_epi64() {
        let idx = _mm256_set1_epi64x(1);
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_maskz_permutexvar_epi64(0, idx, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_permutexvar_epi64(0b00001111, idx, a);
        let e = _mm256_set1_epi64x(2);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_permutexvar_pd() {
        let idx = _mm512_set1_epi64(1);
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let r = _mm512_permutexvar_pd(idx, a);
        let e = _mm512_set1_pd(6.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_permutexvar_pd() {
        let idx = _mm512_set1_epi64(1);
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let r = _mm512_mask_permutexvar_pd(a, 0, idx, a);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_permutexvar_pd(a, 0b11111111, idx, a);
        let e = _mm512_set1_pd(6.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_permutexvar_pd() {
        let idx = _mm512_set1_epi64(1);
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let r = _mm512_maskz_permutexvar_pd(0, idx, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_permutexvar_pd(0b00001111, idx, a);
        let e = _mm512_set_pd(0., 0., 0., 0., 6., 6., 6., 6.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_permutexvar_pd() {
        let idx = _mm256_set1_epi64x(1);
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let r = _mm256_permutexvar_pd(idx, a);
        let e = _mm256_set1_pd(2.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_permutexvar_pd() {
        let idx = _mm256_set1_epi64x(1);
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let r = _mm256_mask_permutexvar_pd(a, 0, idx, a);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_permutexvar_pd(a, 0b00001111, idx, a);
        let e = _mm256_set1_pd(2.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_permutexvar_pd() {
        let idx = _mm256_set1_epi64x(1);
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let r = _mm256_maskz_permutexvar_pd(0, idx, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_permutexvar_pd(0b00001111, idx, a);
        let e = _mm256_set1_pd(2.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_permutex2var_epi64() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let idx = _mm512_set_epi64(1, 1 << 3, 2, 1 << 3, 3, 1 << 3, 4, 1 << 3);
        let b = _mm512_set1_epi64(100);
        let r = _mm512_permutex2var_epi64(a, idx, b);
        let e = _mm512_set_epi64(6, 100, 5, 100, 4, 100, 3, 100);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_permutex2var_epi64() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let idx = _mm512_set_epi64(1, 1 << 3, 2, 1 << 3, 3, 1 << 3, 4, 1 << 3);
        let b = _mm512_set1_epi64(100);
        let r = _mm512_mask_permutex2var_epi64(a, 0, idx, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_permutex2var_epi64(a, 0b11111111, idx, b);
        let e = _mm512_set_epi64(6, 100, 5, 100, 4, 100, 3, 100);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_permutex2var_epi64() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let idx = _mm512_set_epi64(1, 1 << 3, 2, 1 << 3, 3, 1 << 3, 4, 1 << 3);
        let b = _mm512_set1_epi64(100);
        let r = _mm512_maskz_permutex2var_epi64(0, a, idx, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_permutex2var_epi64(0b00001111, a, idx, b);
        let e = _mm512_set_epi64(0, 0, 0, 0, 4, 100, 3, 100);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask2_permutex2var_epi64() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let idx = _mm512_set_epi64(1000, 1 << 3, 2000, 1 << 3, 3, 1 << 3, 4, 1 << 3);
        let b = _mm512_set1_epi64(100);
        let r = _mm512_mask2_permutex2var_epi64(a, idx, 0, b);
        assert_eq_m512i(r, idx);
        let r = _mm512_mask2_permutex2var_epi64(a, idx, 0b00001111, b);
        let e = _mm512_set_epi64(1000, 1 << 3, 2000, 1 << 3, 4, 100, 3, 100);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_permutex2var_epi64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let idx = _mm256_set_epi64x(1, 1 << 2, 2, 1 << 2);
        let b = _mm256_set1_epi64x(100);
        let r = _mm256_permutex2var_epi64(a, idx, b);
        let e = _mm256_set_epi64x(2, 100, 1, 100);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_permutex2var_epi64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let idx = _mm256_set_epi64x(1, 1 << 2, 2, 1 << 2);
        let b = _mm256_set1_epi64x(100);
        let r = _mm256_mask_permutex2var_epi64(a, 0, idx, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_permutex2var_epi64(a, 0b00001111, idx, b);
        let e = _mm256_set_epi64x(2, 100, 1, 100);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_permutex2var_epi64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let idx = _mm256_set_epi64x(1, 1 << 2, 2, 1 << 2);
        let b = _mm256_set1_epi64x(100);
        let r = _mm256_maskz_permutex2var_epi64(0, a, idx, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_permutex2var_epi64(0b00001111, a, idx, b);
        let e = _mm256_set_epi64x(2, 100, 1, 100);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask2_permutex2var_epi64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let idx = _mm256_set_epi64x(1, 1 << 2, 2, 1 << 2);
        let b = _mm256_set1_epi64x(100);
        let r = _mm256_mask2_permutex2var_epi64(a, idx, 0, b);
        assert_eq_m256i(r, idx);
        let r = _mm256_mask2_permutex2var_epi64(a, idx, 0b00001111, b);
        let e = _mm256_set_epi64x(2, 100, 1, 100);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_permutex2var_epi64() {
        let a = _mm_set_epi64x(0, 1);
        let idx = _mm_set_epi64x(1, 1 << 1);
        let b = _mm_set1_epi64x(100);
        let r = _mm_permutex2var_epi64(a, idx, b);
        let e = _mm_set_epi64x(0, 100);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_permutex2var_epi64() {
        let a = _mm_set_epi64x(0, 1);
        let idx = _mm_set_epi64x(1, 1 << 1);
        let b = _mm_set1_epi64x(100);
        let r = _mm_mask_permutex2var_epi64(a, 0, idx, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_permutex2var_epi64(a, 0b00000011, idx, b);
        let e = _mm_set_epi64x(0, 100);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_permutex2var_epi64() {
        let a = _mm_set_epi64x(0, 1);
        let idx = _mm_set_epi64x(1, 1 << 1);
        let b = _mm_set1_epi64x(100);
        let r = _mm_maskz_permutex2var_epi64(0, a, idx, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_permutex2var_epi64(0b00000011, a, idx, b);
        let e = _mm_set_epi64x(0, 100);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask2_permutex2var_epi64() {
        let a = _mm_set_epi64x(0, 1);
        let idx = _mm_set_epi64x(1, 1 << 1);
        let b = _mm_set1_epi64x(100);
        let r = _mm_mask2_permutex2var_epi64(a, idx, 0, b);
        assert_eq_m128i(r, idx);
        let r = _mm_mask2_permutex2var_epi64(a, idx, 0b00000011, b);
        let e = _mm_set_epi64x(0, 100);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_permutex2var_pd() {
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let idx = _mm512_set_epi64(1, 1 << 3, 2, 1 << 3, 3, 1 << 3, 4, 1 << 3);
        let b = _mm512_set1_pd(100.);
        let r = _mm512_permutex2var_pd(a, idx, b);
        let e = _mm512_set_pd(6., 100., 5., 100., 4., 100., 3., 100.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_permutex2var_pd() {
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let idx = _mm512_set_epi64(1, 1 << 3, 2, 1 << 3, 3, 1 << 3, 4, 1 << 3);
        let b = _mm512_set1_pd(100.);
        let r = _mm512_mask_permutex2var_pd(a, 0, idx, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_permutex2var_pd(a, 0b11111111, idx, b);
        let e = _mm512_set_pd(6., 100., 5., 100., 4., 100., 3., 100.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_permutex2var_pd() {
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let idx = _mm512_set_epi64(1, 1 << 3, 2, 1 << 3, 3, 1 << 3, 4, 1 << 3);
        let b = _mm512_set1_pd(100.);
        let r = _mm512_maskz_permutex2var_pd(0, a, idx, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_permutex2var_pd(0b00001111, a, idx, b);
        let e = _mm512_set_pd(0., 0., 0., 0., 4., 100., 3., 100.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask2_permutex2var_pd() {
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let idx = _mm512_set_epi64(1, 1 << 3, 2, 1 << 3, 3, 1 << 3, 4, 1 << 3);
        let b = _mm512_set1_pd(100.);
        let r = _mm512_mask2_permutex2var_pd(a, idx, 0, b);
        assert_eq_m512d(r, _mm512_castsi512_pd(idx));
        let r = _mm512_mask2_permutex2var_pd(a, idx, 0b11111111, b);
        let e = _mm512_set_pd(6., 100., 5., 100., 4., 100., 3., 100.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_permutex2var_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let idx = _mm256_set_epi64x(1, 1 << 2, 2, 1 << 2);
        let b = _mm256_set1_pd(100.);
        let r = _mm256_permutex2var_pd(a, idx, b);
        let e = _mm256_set_pd(2., 100., 1., 100.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_permutex2var_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let idx = _mm256_set_epi64x(1, 1 << 2, 2, 1 << 2);
        let b = _mm256_set1_pd(100.);
        let r = _mm256_mask_permutex2var_pd(a, 0, idx, b);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_permutex2var_pd(a, 0b00001111, idx, b);
        let e = _mm256_set_pd(2., 100., 1., 100.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_permutex2var_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let idx = _mm256_set_epi64x(1, 1 << 2, 2, 1 << 2);
        let b = _mm256_set1_pd(100.);
        let r = _mm256_maskz_permutex2var_pd(0, a, idx, b);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_permutex2var_pd(0b00001111, a, idx, b);
        let e = _mm256_set_pd(2., 100., 1., 100.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask2_permutex2var_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let idx = _mm256_set_epi64x(1, 1 << 2, 2, 1 << 2);
        let b = _mm256_set1_pd(100.);
        let r = _mm256_mask2_permutex2var_pd(a, idx, 0, b);
        assert_eq_m256d(r, _mm256_castsi256_pd(idx));
        let r = _mm256_mask2_permutex2var_pd(a, idx, 0b00001111, b);
        let e = _mm256_set_pd(2., 100., 1., 100.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_permutex2var_pd() {
        let a = _mm_set_pd(0., 1.);
        let idx = _mm_set_epi64x(1, 1 << 1);
        let b = _mm_set1_pd(100.);
        let r = _mm_permutex2var_pd(a, idx, b);
        let e = _mm_set_pd(0., 100.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_permutex2var_pd() {
        let a = _mm_set_pd(0., 1.);
        let idx = _mm_set_epi64x(1, 1 << 1);
        let b = _mm_set1_pd(100.);
        let r = _mm_mask_permutex2var_pd(a, 0, idx, b);
        assert_eq_m128d(r, a);
        let r = _mm_mask_permutex2var_pd(a, 0b00000011, idx, b);
        let e = _mm_set_pd(0., 100.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_permutex2var_pd() {
        let a = _mm_set_pd(0., 1.);
        let idx = _mm_set_epi64x(1, 1 << 1);
        let b = _mm_set1_pd(100.);
        let r = _mm_maskz_permutex2var_pd(0, a, idx, b);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_permutex2var_pd(0b00000011, a, idx, b);
        let e = _mm_set_pd(0., 100.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask2_permutex2var_pd() {
        let a = _mm_set_pd(0., 1.);
        let idx = _mm_set_epi64x(1, 1 << 1);
        let b = _mm_set1_pd(100.);
        let r = _mm_mask2_permutex2var_pd(a, idx, 0, b);
        assert_eq_m128d(r, _mm_castsi128_pd(idx));
        let r = _mm_mask2_permutex2var_pd(a, idx, 0b00000011, b);
        let e = _mm_set_pd(0., 100.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_shuffle_pd() {
        let a = _mm256_set_pd(1., 4., 5., 8.);
        let b = _mm256_set_pd(2., 3., 6., 7.);
        let r = _mm256_mask_shuffle_pd::<0b11_11_11_11>(a, 0, a, b);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_shuffle_pd::<0b11_11_11_11>(a, 0b00001111, a, b);
        let e = _mm256_set_pd(2., 1., 6., 5.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_shuffle_pd() {
        let a = _mm256_set_pd(1., 4., 5., 8.);
        let b = _mm256_set_pd(2., 3., 6., 7.);
        let r = _mm256_maskz_shuffle_pd::<0b11_11_11_11>(0, a, b);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_shuffle_pd::<0b11_11_11_11>(0b00001111, a, b);
        let e = _mm256_set_pd(2., 1., 6., 5.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_shuffle_pd() {
        let a = _mm_set_pd(1., 4.);
        let b = _mm_set_pd(2., 3.);
        let r = _mm_mask_shuffle_pd::<0b11_11_11_11>(a, 0, a, b);
        assert_eq_m128d(r, a);
        let r = _mm_mask_shuffle_pd::<0b11_11_11_11>(a, 0b00000011, a, b);
        let e = _mm_set_pd(2., 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_shuffle_pd() {
        let a = _mm_set_pd(1., 4.);
        let b = _mm_set_pd(2., 3.);
        let r = _mm_maskz_shuffle_pd::<0b11_11_11_11>(0, a, b);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_shuffle_pd::<0b11_11_11_11>(0b00000011, a, b);
        let e = _mm_set_pd(2., 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_shuffle_i64x2() {
        let a = _mm512_setr_epi64(1, 4, 5, 8, 9, 12, 13, 16);
        let b = _mm512_setr_epi64(2, 3, 6, 7, 10, 11, 14, 15);
        let r = _mm512_shuffle_i64x2::<0b00_00_00_00>(a, b);
        let e = _mm512_setr_epi64(1, 4, 1, 4, 2, 3, 2, 3);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_shuffle_i64x2() {
        let a = _mm512_setr_epi64(1, 4, 5, 8, 9, 12, 13, 16);
        let b = _mm512_setr_epi64(2, 3, 6, 7, 10, 11, 14, 15);
        let r = _mm512_mask_shuffle_i64x2::<0b00_00_00_00>(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_shuffle_i64x2::<0b00_00_00_00>(a, 0b11111111, a, b);
        let e = _mm512_setr_epi64(1, 4, 1, 4, 2, 3, 2, 3);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_shuffle_i64x2() {
        let a = _mm512_setr_epi64(1, 4, 5, 8, 9, 12, 13, 16);
        let b = _mm512_setr_epi64(2, 3, 6, 7, 10, 11, 14, 15);
        let r = _mm512_maskz_shuffle_i64x2::<0b00_00_00_00>(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_shuffle_i64x2::<0b00_00_00_00>(0b00001111, a, b);
        let e = _mm512_setr_epi64(1, 4, 1, 4, 0, 0, 0, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_shuffle_i64x2() {
        let a = _mm256_set_epi64x(1, 4, 5, 8);
        let b = _mm256_set_epi64x(2, 3, 6, 7);
        let r = _mm256_shuffle_i64x2::<0b00>(a, b);
        let e = _mm256_set_epi64x(6, 7, 5, 8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_shuffle_i64x2() {
        let a = _mm256_set_epi64x(1, 4, 5, 8);
        let b = _mm256_set_epi64x(2, 3, 6, 7);
        let r = _mm256_mask_shuffle_i64x2::<0b00>(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_shuffle_i64x2::<0b00>(a, 0b00001111, a, b);
        let e = _mm256_set_epi64x(6, 7, 5, 8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_shuffle_i64x2() {
        let a = _mm256_set_epi64x(1, 4, 5, 8);
        let b = _mm256_set_epi64x(2, 3, 6, 7);
        let r = _mm256_maskz_shuffle_i64x2::<0b00>(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_shuffle_i64x2::<0b00>(0b00001111, a, b);
        let e = _mm256_set_epi64x(6, 7, 5, 8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_shuffle_f64x2() {
        let a = _mm512_setr_pd(1., 4., 5., 8., 9., 12., 13., 16.);
        let b = _mm512_setr_pd(2., 3., 6., 7., 10., 11., 14., 15.);
        let r = _mm512_shuffle_f64x2::<0b00_00_00_00>(a, b);
        let e = _mm512_setr_pd(1., 4., 1., 4., 2., 3., 2., 3.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_shuffle_f64x2() {
        let a = _mm512_setr_pd(1., 4., 5., 8., 9., 12., 13., 16.);
        let b = _mm512_setr_pd(2., 3., 6., 7., 10., 11., 14., 15.);
        let r = _mm512_mask_shuffle_f64x2::<0b00_00_00_00>(a, 0, a, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_shuffle_f64x2::<0b00_00_00_00>(a, 0b11111111, a, b);
        let e = _mm512_setr_pd(1., 4., 1., 4., 2., 3., 2., 3.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_shuffle_f64x2() {
        let a = _mm512_setr_pd(1., 4., 5., 8., 9., 12., 13., 16.);
        let b = _mm512_setr_pd(2., 3., 6., 7., 10., 11., 14., 15.);
        let r = _mm512_maskz_shuffle_f64x2::<0b00_00_00_00>(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_shuffle_f64x2::<0b00_00_00_00>(0b00001111, a, b);
        let e = _mm512_setr_pd(1., 4., 1., 4., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_shuffle_f64x2() {
        let a = _mm256_set_pd(1., 4., 5., 8.);
        let b = _mm256_set_pd(2., 3., 6., 7.);
        let r = _mm256_shuffle_f64x2::<0b00>(a, b);
        let e = _mm256_set_pd(6., 7., 5., 8.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_shuffle_f64x2() {
        let a = _mm256_set_pd(1., 4., 5., 8.);
        let b = _mm256_set_pd(2., 3., 6., 7.);
        let r = _mm256_mask_shuffle_f64x2::<0b00>(a, 0, a, b);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_shuffle_f64x2::<0b00>(a, 0b00001111, a, b);
        let e = _mm256_set_pd(6., 7., 5., 8.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_shuffle_f64x2() {
        let a = _mm256_set_pd(1., 4., 5., 8.);
        let b = _mm256_set_pd(2., 3., 6., 7.);
        let r = _mm256_maskz_shuffle_f64x2::<0b00>(0, a, b);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_shuffle_f64x2::<0b00>(0b00001111, a, b);
        let e = _mm256_set_pd(6., 7., 5., 8.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_movedup_pd() {
        let a = _mm512_setr_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let r = _mm512_movedup_pd(a);
        let e = _mm512_setr_pd(1., 1., 3., 3., 5., 5., 7., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_movedup_pd() {
        let a = _mm512_setr_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let r = _mm512_mask_movedup_pd(a, 0, a);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_movedup_pd(a, 0b11111111, a);
        let e = _mm512_setr_pd(1., 1., 3., 3., 5., 5., 7., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_movedup_pd() {
        let a = _mm512_setr_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let r = _mm512_maskz_movedup_pd(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_movedup_pd(0b00001111, a);
        let e = _mm512_setr_pd(1., 1., 3., 3., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_movedup_pd() {
        let a = _mm256_set_pd(1., 2., 3., 4.);
        let r = _mm256_mask_movedup_pd(a, 0, a);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_movedup_pd(a, 0b00001111, a);
        let e = _mm256_set_pd(2., 2., 4., 4.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_movedup_pd() {
        let a = _mm256_set_pd(1., 2., 3., 4.);
        let r = _mm256_maskz_movedup_pd(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_movedup_pd(0b00001111, a);
        let e = _mm256_set_pd(2., 2., 4., 4.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_movedup_pd() {
        let a = _mm_set_pd(1., 2.);
        let r = _mm_mask_movedup_pd(a, 0, a);
        assert_eq_m128d(r, a);
        let r = _mm_mask_movedup_pd(a, 0b00000011, a);
        let e = _mm_set_pd(2., 2.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_movedup_pd() {
        let a = _mm_set_pd(1., 2.);
        let r = _mm_maskz_movedup_pd(0, a);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_movedup_pd(0b00000011, a);
        let e = _mm_set_pd(2., 2.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_inserti64x4() {
        let a = _mm512_setr_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        let b = _mm256_setr_epi64x(17, 18, 19, 20);
        let r = _mm512_inserti64x4::<1>(a, b);
        let e = _mm512_setr_epi64(1, 2, 3, 4, 17, 18, 19, 20);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_inserti64x4() {
        let a = _mm512_setr_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        let b = _mm256_setr_epi64x(17, 18, 19, 20);
        let r = _mm512_mask_inserti64x4::<1>(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_inserti64x4::<1>(a, 0b11111111, a, b);
        let e = _mm512_setr_epi64(1, 2, 3, 4, 17, 18, 19, 20);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_inserti64x4() {
        let a = _mm512_setr_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        let b = _mm256_setr_epi64x(17, 18, 19, 20);
        let r = _mm512_maskz_inserti64x4::<1>(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_inserti64x4::<1>(0b00001111, a, b);
        let e = _mm512_setr_epi64(1, 2, 3, 4, 0, 0, 0, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_insertf64x4() {
        let a = _mm512_setr_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let b = _mm256_setr_pd(17., 18., 19., 20.);
        let r = _mm512_insertf64x4::<1>(a, b);
        let e = _mm512_setr_pd(1., 2., 3., 4., 17., 18., 19., 20.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_insertf64x4() {
        let a = _mm512_setr_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let b = _mm256_setr_pd(17., 18., 19., 20.);
        let r = _mm512_mask_insertf64x4::<1>(a, 0, a, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_insertf64x4::<1>(a, 0b11111111, a, b);
        let e = _mm512_setr_pd(1., 2., 3., 4., 17., 18., 19., 20.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_insertf64x4() {
        let a = _mm512_setr_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let b = _mm256_setr_pd(17., 18., 19., 20.);
        let r = _mm512_maskz_insertf64x4::<1>(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_insertf64x4::<1>(0b00001111, a, b);
        let e = _mm512_setr_pd(1., 2., 3., 4., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_castpd128_pd512() {
        let a = _mm_setr_pd(17., 18.);
        let r = _mm512_castpd128_pd512(a);
        let e = _mm512_setr_pd(17., 18., -1., -1., -1., -1., -1., -1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_castpd256_pd512() {
        let a = _mm256_setr_pd(17., 18., 19., 20.);
        let r = _mm512_castpd256_pd512(a);
        let e = _mm512_setr_pd(17., 18., 19., 20., -1., -1., -1., -1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_zextpd128_pd512() {
        let a = _mm_setr_pd(17., 18.);
        let r = _mm512_zextpd128_pd512(a);
        let e = _mm512_setr_pd(17., 18., 0., 0., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_zextpd256_pd512() {
        let a = _mm256_setr_pd(17., 18., 19., 20.);
        let r = _mm512_zextpd256_pd512(a);
        let e = _mm512_setr_pd(17., 18., 19., 20., 0., 0., 0., 0.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_castpd512_pd128() {
        let a = _mm512_setr_pd(17., 18., -1., -1., -1., -1., -1., -1.);
        let r = _mm512_castpd512_pd128(a);
        let e = _mm_setr_pd(17., 18.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_castpd512_pd256() {
        let a = _mm512_setr_pd(17., 18., 19., 20., -1., -1., -1., -1.);
        let r = _mm512_castpd512_pd256(a);
        let e = _mm256_setr_pd(17., 18., 19., 20.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_castpd_ps() {
        let a = _mm512_set1_pd(1.);
        let r = _mm512_castpd_ps(a);
        let e = _mm512_set_ps(
            1.875, 0.0, 1.875, 0.0, 1.875, 0.0, 1.875, 0.0, 1.875, 0.0, 1.875, 0.0, 1.875, 0.0,
            1.875, 0.0,
        );
        assert_eq_m512(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_castpd_si512() {
        let a = _mm512_set1_pd(1.);
        let r = _mm512_castpd_si512(a);
        let e = _mm512_set_epi32(
            1072693248, 0, 1072693248, 0, 1072693248, 0, 1072693248, 0, 1072693248, 0, 1072693248,
            0, 1072693248, 0, 1072693248, 0,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_castsi128_si512() {
        let a = _mm_setr_epi64x(17, 18);
        let r = _mm512_castsi128_si512(a);
        let e = _mm512_setr_epi64(17, 18, -1, -1, -1, -1, -1, -1);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_castsi256_si512() {
        let a = _mm256_setr_epi64x(17, 18, 19, 20);
        let r = _mm512_castsi256_si512(a);
        let e = _mm512_setr_epi64(17, 18, 19, 20, -1, -1, -1, -1);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_zextsi128_si512() {
        let a = _mm_setr_epi64x(17, 18);
        let r = _mm512_zextsi128_si512(a);
        let e = _mm512_setr_epi64(17, 18, 0, 0, 0, 0, 0, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_zextsi256_si512() {
        let a = _mm256_setr_epi64x(17, 18, 19, 20);
        let r = _mm512_zextsi256_si512(a);
        let e = _mm512_setr_epi64(17, 18, 19, 20, 0, 0, 0, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_castsi512_si128() {
        let a = _mm512_setr_epi64(17, 18, -1, -1, -1, -1, -1, -1);
        let r = _mm512_castsi512_si128(a);
        let e = _mm_setr_epi64x(17, 18);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_castsi512_si256() {
        let a = _mm512_setr_epi64(17, 18, 19, 20, -1, -1, -1, -1);
        let r = _mm512_castsi512_si256(a);
        let e = _mm256_setr_epi64x(17, 18, 19, 20);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_castsi512_ps() {
        let a = _mm512_set1_epi64(1 << 62);
        let r = _mm512_castsi512_ps(a);
        let e = _mm512_set_ps(
            2., 0., 2., 0., 2., 0., 2., 0., 2., 0., 2., 0., 2., 0., 2., 0.,
        );
        assert_eq_m512(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_castsi512_pd() {
        let a = _mm512_set1_epi64(1 << 62);
        let r = _mm512_castsi512_pd(a);
        let e = _mm512_set_pd(2., 2., 2., 2., 2., 2., 2., 2.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_broadcastq_epi64() {
        let a = _mm_setr_epi64x(17, 18);
        let r = _mm512_broadcastq_epi64(a);
        let e = _mm512_set1_epi64(17);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_broadcastq_epi64() {
        let src = _mm512_set1_epi64(18);
        let a = _mm_setr_epi64x(17, 18);
        let r = _mm512_mask_broadcastq_epi64(src, 0, a);
        assert_eq_m512i(r, src);
        let r = _mm512_mask_broadcastq_epi64(src, 0b11111111, a);
        let e = _mm512_set1_epi64(17);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_broadcastq_epi64() {
        let a = _mm_setr_epi64x(17, 18);
        let r = _mm512_maskz_broadcastq_epi64(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_broadcastq_epi64(0b00001111, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 17, 17, 17, 17);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_broadcastq_epi64() {
        let src = _mm256_set1_epi64x(18);
        let a = _mm_set_epi64x(17, 18);
        let r = _mm256_mask_broadcastq_epi64(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm256_mask_broadcastq_epi64(src, 0b00001111, a);
        let e = _mm256_set1_epi64x(18);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_broadcastq_epi64() {
        let a = _mm_set_epi64x(17, 18);
        let r = _mm256_maskz_broadcastq_epi64(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_broadcastq_epi64(0b00001111, a);
        let e = _mm256_set1_epi64x(18);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_broadcastq_epi64() {
        let src = _mm_set1_epi64x(18);
        let a = _mm_set_epi64x(17, 18);
        let r = _mm_mask_broadcastq_epi64(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_broadcastq_epi64(src, 0b00000011, a);
        let e = _mm_set1_epi64x(18);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_broadcastq_epi64() {
        let a = _mm_set_epi64x(17, 18);
        let r = _mm_maskz_broadcastq_epi64(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_broadcastq_epi64(0b00000011, a);
        let e = _mm_set1_epi64x(18);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_broadcastsd_pd() {
        let a = _mm_set_pd(17., 18.);
        let r = _mm512_broadcastsd_pd(a);
        let e = _mm512_set1_pd(18.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_broadcastsd_pd() {
        let src = _mm512_set1_pd(18.);
        let a = _mm_set_pd(17., 18.);
        let r = _mm512_mask_broadcastsd_pd(src, 0, a);
        assert_eq_m512d(r, src);
        let r = _mm512_mask_broadcastsd_pd(src, 0b11111111, a);
        let e = _mm512_set1_pd(18.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_broadcastsd_pd() {
        let a = _mm_set_pd(17., 18.);
        let r = _mm512_maskz_broadcastsd_pd(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_broadcastsd_pd(0b00001111, a);
        let e = _mm512_set_pd(0., 0., 0., 0., 18., 18., 18., 18.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_broadcastsd_pd() {
        let src = _mm256_set1_pd(18.);
        let a = _mm_set_pd(17., 18.);
        let r = _mm256_mask_broadcastsd_pd(src, 0, a);
        assert_eq_m256d(r, src);
        let r = _mm256_mask_broadcastsd_pd(src, 0b00001111, a);
        let e = _mm256_set1_pd(18.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_broadcastsd_pd() {
        let a = _mm_set_pd(17., 18.);
        let r = _mm256_maskz_broadcastsd_pd(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_broadcastsd_pd(0b00001111, a);
        let e = _mm256_set1_pd(18.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_broadcast_i64x4() {
        let a = _mm256_set_epi64x(17, 18, 19, 20);
        let r = _mm512_broadcast_i64x4(a);
        let e = _mm512_set_epi64(17, 18, 19, 20, 17, 18, 19, 20);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_broadcast_i64x4() {
        let src = _mm512_set1_epi64(18);
        let a = _mm256_set_epi64x(17, 18, 19, 20);
        let r = _mm512_mask_broadcast_i64x4(src, 0, a);
        assert_eq_m512i(r, src);
        let r = _mm512_mask_broadcast_i64x4(src, 0b11111111, a);
        let e = _mm512_set_epi64(17, 18, 19, 20, 17, 18, 19, 20);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_broadcast_i64x4() {
        let a = _mm256_set_epi64x(17, 18, 19, 20);
        let r = _mm512_maskz_broadcast_i64x4(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_broadcast_i64x4(0b00001111, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 17, 18, 19, 20);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_broadcast_f64x4() {
        let a = _mm256_set_pd(17., 18., 19., 20.);
        let r = _mm512_broadcast_f64x4(a);
        let e = _mm512_set_pd(17., 18., 19., 20., 17., 18., 19., 20.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_broadcast_f64x4() {
        let src = _mm512_set1_pd(18.);
        let a = _mm256_set_pd(17., 18., 19., 20.);
        let r = _mm512_mask_broadcast_f64x4(src, 0, a);
        assert_eq_m512d(r, src);
        let r = _mm512_mask_broadcast_f64x4(src, 0b11111111, a);
        let e = _mm512_set_pd(17., 18., 19., 20., 17., 18., 19., 20.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_broadcast_f64x4() {
        let a = _mm256_set_pd(17., 18., 19., 20.);
        let r = _mm512_maskz_broadcast_f64x4(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_broadcast_f64x4(0b00001111, a);
        let e = _mm512_set_pd(0., 0., 0., 0., 17., 18., 19., 20.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_blend_epi64() {
        let a = _mm512_set1_epi64(1);
        let b = _mm512_set1_epi64(2);
        let r = _mm512_mask_blend_epi64(0b11110000, a, b);
        let e = _mm512_set_epi64(2, 2, 2, 2, 1, 1, 1, 1);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_blend_epi64() {
        let a = _mm256_set1_epi64x(1);
        let b = _mm256_set1_epi64x(2);
        let r = _mm256_mask_blend_epi64(0b00001111, a, b);
        let e = _mm256_set1_epi64x(2);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_blend_epi64() {
        let a = _mm_set1_epi64x(1);
        let b = _mm_set1_epi64x(2);
        let r = _mm_mask_blend_epi64(0b00000011, a, b);
        let e = _mm_set1_epi64x(2);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_blend_pd() {
        let a = _mm512_set1_pd(1.);
        let b = _mm512_set1_pd(2.);
        let r = _mm512_mask_blend_pd(0b11110000, a, b);
        let e = _mm512_set_pd(2., 2., 2., 2., 1., 1., 1., 1.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_blend_pd() {
        let a = _mm256_set1_pd(1.);
        let b = _mm256_set1_pd(2.);
        let r = _mm256_mask_blend_pd(0b00001111, a, b);
        let e = _mm256_set1_pd(2.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_blend_pd() {
        let a = _mm_set1_pd(1.);
        let b = _mm_set1_pd(2.);
        let r = _mm_mask_blend_pd(0b00000011, a, b);
        let e = _mm_set1_pd(2.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_unpackhi_epi64() {
        let a = _mm512_set_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        let b = _mm512_set_epi64(17, 18, 19, 20, 21, 22, 23, 24);
        let r = _mm512_unpackhi_epi64(a, b);
        let e = _mm512_set_epi64(17, 1, 19, 3, 21, 5, 23, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_unpackhi_epi64() {
        let a = _mm512_set_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        let b = _mm512_set_epi64(17, 18, 19, 20, 21, 22, 23, 24);
        let r = _mm512_mask_unpackhi_epi64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_unpackhi_epi64(a, 0b11111111, a, b);
        let e = _mm512_set_epi64(17, 1, 19, 3, 21, 5, 23, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_unpackhi_epi64() {
        let a = _mm512_set_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        let b = _mm512_set_epi64(17, 18, 19, 20, 21, 22, 23, 24);
        let r = _mm512_maskz_unpackhi_epi64(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_unpackhi_epi64(0b00001111, a, b);
        let e = _mm512_set_epi64(0, 0, 0, 0, 21, 5, 23, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_unpackhi_epi64() {
        let a = _mm256_set_epi64x(1, 2, 3, 4);
        let b = _mm256_set_epi64x(17, 18, 19, 20);
        let r = _mm256_mask_unpackhi_epi64(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_unpackhi_epi64(a, 0b00001111, a, b);
        let e = _mm256_set_epi64x(17, 1, 19, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_unpackhi_epi64() {
        let a = _mm256_set_epi64x(1, 2, 3, 4);
        let b = _mm256_set_epi64x(17, 18, 19, 20);
        let r = _mm256_maskz_unpackhi_epi64(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_unpackhi_epi64(0b00001111, a, b);
        let e = _mm256_set_epi64x(17, 1, 19, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_unpackhi_epi64() {
        let a = _mm_set_epi64x(1, 2);
        let b = _mm_set_epi64x(17, 18);
        let r = _mm_mask_unpackhi_epi64(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_unpackhi_epi64(a, 0b00000011, a, b);
        let e = _mm_set_epi64x(17, 1);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_unpackhi_epi64() {
        let a = _mm_set_epi64x(1, 2);
        let b = _mm_set_epi64x(17, 18);
        let r = _mm_maskz_unpackhi_epi64(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_unpackhi_epi64(0b00000011, a, b);
        let e = _mm_set_epi64x(17, 1);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_unpackhi_pd() {
        let a = _mm512_set_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let b = _mm512_set_pd(17., 18., 19., 20., 21., 22., 23., 24.);
        let r = _mm512_unpackhi_pd(a, b);
        let e = _mm512_set_pd(17., 1., 19., 3., 21., 5., 23., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_unpackhi_pd() {
        let a = _mm512_set_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let b = _mm512_set_pd(17., 18., 19., 20., 21., 22., 23., 24.);
        let r = _mm512_mask_unpackhi_pd(a, 0, a, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_unpackhi_pd(a, 0b11111111, a, b);
        let e = _mm512_set_pd(17., 1., 19., 3., 21., 5., 23., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_unpackhi_pd() {
        let a = _mm512_set_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let b = _mm512_set_pd(17., 18., 19., 20., 21., 22., 23., 24.);
        let r = _mm512_maskz_unpackhi_pd(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_unpackhi_pd(0b00001111, a, b);
        let e = _mm512_set_pd(0., 0., 0., 0., 21., 5., 23., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_unpackhi_pd() {
        let a = _mm256_set_pd(1., 2., 3., 4.);
        let b = _mm256_set_pd(17., 18., 19., 20.);
        let r = _mm256_mask_unpackhi_pd(a, 0, a, b);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_unpackhi_pd(a, 0b00001111, a, b);
        let e = _mm256_set_pd(17., 1., 19., 3.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_unpackhi_pd() {
        let a = _mm256_set_pd(1., 2., 3., 4.);
        let b = _mm256_set_pd(17., 18., 19., 20.);
        let r = _mm256_maskz_unpackhi_pd(0, a, b);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_unpackhi_pd(0b00001111, a, b);
        let e = _mm256_set_pd(17., 1., 19., 3.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_unpackhi_pd() {
        let a = _mm_set_pd(1., 2.);
        let b = _mm_set_pd(17., 18.);
        let r = _mm_mask_unpackhi_pd(a, 0, a, b);
        assert_eq_m128d(r, a);
        let r = _mm_mask_unpackhi_pd(a, 0b00000011, a, b);
        let e = _mm_set_pd(17., 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_unpackhi_pd() {
        let a = _mm_set_pd(1., 2.);
        let b = _mm_set_pd(17., 18.);
        let r = _mm_maskz_unpackhi_pd(0, a, b);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_unpackhi_pd(0b00000011, a, b);
        let e = _mm_set_pd(17., 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_unpacklo_epi64() {
        let a = _mm512_set_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        let b = _mm512_set_epi64(17, 18, 19, 20, 21, 22, 23, 24);
        let r = _mm512_unpacklo_epi64(a, b);
        let e = _mm512_set_epi64(18, 2, 20, 4, 22, 6, 24, 8);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_unpacklo_epi64() {
        let a = _mm512_set_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        let b = _mm512_set_epi64(17, 18, 19, 20, 21, 22, 23, 24);
        let r = _mm512_mask_unpacklo_epi64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_unpacklo_epi64(a, 0b11111111, a, b);
        let e = _mm512_set_epi64(18, 2, 20, 4, 22, 6, 24, 8);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_unpacklo_epi64() {
        let a = _mm512_set_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        let b = _mm512_set_epi64(17, 18, 19, 20, 21, 22, 23, 24);
        let r = _mm512_maskz_unpacklo_epi64(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_unpacklo_epi64(0b00001111, a, b);
        let e = _mm512_set_epi64(0, 0, 0, 0, 22, 6, 24, 8);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_unpacklo_epi64() {
        let a = _mm256_set_epi64x(1, 2, 3, 4);
        let b = _mm256_set_epi64x(17, 18, 19, 20);
        let r = _mm256_mask_unpacklo_epi64(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_unpacklo_epi64(a, 0b00001111, a, b);
        let e = _mm256_set_epi64x(18, 2, 20, 4);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_unpacklo_epi64() {
        let a = _mm256_set_epi64x(1, 2, 3, 4);
        let b = _mm256_set_epi64x(17, 18, 19, 20);
        let r = _mm256_maskz_unpacklo_epi64(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_unpacklo_epi64(0b00001111, a, b);
        let e = _mm256_set_epi64x(18, 2, 20, 4);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_unpacklo_epi64() {
        let a = _mm_set_epi64x(1, 2);
        let b = _mm_set_epi64x(17, 18);
        let r = _mm_mask_unpacklo_epi64(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_unpacklo_epi64(a, 0b00000011, a, b);
        let e = _mm_set_epi64x(18, 2);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_unpacklo_epi64() {
        let a = _mm_set_epi64x(1, 2);
        let b = _mm_set_epi64x(17, 18);
        let r = _mm_maskz_unpacklo_epi64(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_unpacklo_epi64(0b00000011, a, b);
        let e = _mm_set_epi64x(18, 2);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_unpacklo_pd() {
        let a = _mm512_set_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let b = _mm512_set_pd(17., 18., 19., 20., 21., 22., 23., 24.);
        let r = _mm512_unpacklo_pd(a, b);
        let e = _mm512_set_pd(18., 2., 20., 4., 22., 6., 24., 8.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_unpacklo_pd() {
        let a = _mm512_set_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let b = _mm512_set_pd(17., 18., 19., 20., 21., 22., 23., 24.);
        let r = _mm512_mask_unpacklo_pd(a, 0, a, b);
        assert_eq_m512d(r, a);
        let r = _mm512_mask_unpacklo_pd(a, 0b11111111, a, b);
        let e = _mm512_set_pd(18., 2., 20., 4., 22., 6., 24., 8.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_unpacklo_pd() {
        let a = _mm512_set_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let b = _mm512_set_pd(17., 18., 19., 20., 21., 22., 23., 24.);
        let r = _mm512_maskz_unpacklo_pd(0, a, b);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_unpacklo_pd(0b00001111, a, b);
        let e = _mm512_set_pd(0., 0., 0., 0., 22., 6., 24., 8.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_unpacklo_pd() {
        let a = _mm256_set_pd(1., 2., 3., 4.);
        let b = _mm256_set_pd(17., 18., 19., 20.);
        let r = _mm256_mask_unpacklo_pd(a, 0, a, b);
        assert_eq_m256d(r, a);
        let r = _mm256_mask_unpacklo_pd(a, 0b00001111, a, b);
        let e = _mm256_set_pd(18., 2., 20., 4.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_unpacklo_pd() {
        let a = _mm256_set_pd(1., 2., 3., 4.);
        let b = _mm256_set_pd(17., 18., 19., 20.);
        let r = _mm256_maskz_unpacklo_pd(0, a, b);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_unpacklo_pd(0b00001111, a, b);
        let e = _mm256_set_pd(18., 2., 20., 4.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_unpacklo_pd() {
        let a = _mm_set_pd(1., 2.);
        let b = _mm_set_pd(17., 18.);
        let r = _mm_mask_unpacklo_pd(a, 0, a, b);
        assert_eq_m128d(r, a);
        let r = _mm_mask_unpacklo_pd(a, 0b00000011, a, b);
        let e = _mm_set_pd(18., 2.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_unpacklo_pd() {
        let a = _mm_set_pd(1., 2.);
        let b = _mm_set_pd(17., 18.);
        let r = _mm_maskz_unpacklo_pd(0, a, b);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_unpacklo_pd(0b00000011, a, b);
        let e = _mm_set_pd(18., 2.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_alignr_epi64() {
        let a = _mm512_set_epi64(8, 7, 6, 5, 4, 3, 2, 1);
        let b = _mm512_set_epi64(16, 15, 14, 13, 12, 11, 10, 9);
        let r = _mm512_alignr_epi64::<0>(a, b);
        assert_eq_m512i(r, b);
        let r = _mm512_alignr_epi64::<8>(a, b);
        assert_eq_m512i(r, b);
        let r = _mm512_alignr_epi64::<1>(a, b);
        let e = _mm512_set_epi64(1, 16, 15, 14, 13, 12, 11, 10);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_alignr_epi64() {
        let a = _mm512_set_epi64(8, 7, 6, 5, 4, 3, 2, 1);
        let b = _mm512_set_epi64(16, 15, 14, 13, 12, 11, 10, 9);
        let r = _mm512_mask_alignr_epi64::<1>(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_alignr_epi64::<1>(a, 0b11111111, a, b);
        let e = _mm512_set_epi64(1, 16, 15, 14, 13, 12, 11, 10);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_alignr_epi64() {
        let a = _mm512_set_epi64(8, 7, 6, 5, 4, 3, 2, 1);
        let b = _mm512_set_epi64(16, 15, 14, 13, 12, 11, 10, 9);
        let r = _mm512_maskz_alignr_epi64::<1>(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_alignr_epi64::<1>(0b00001111, a, b);
        let e = _mm512_set_epi64(0, 0, 0, 0, 13, 12, 11, 10);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_alignr_epi64() {
        let a = _mm256_set_epi64x(4, 3, 2, 1);
        let b = _mm256_set_epi64x(8, 7, 6, 5);
        let r = _mm256_alignr_epi64::<0>(a, b);
        let e = _mm256_set_epi64x(8, 7, 6, 5);
        assert_eq_m256i(r, e);
        let r = _mm256_alignr_epi64::<6>(a, b);
        let e = _mm256_set_epi64x(6, 5, 4, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_alignr_epi64() {
        let a = _mm256_set_epi64x(4, 3, 2, 1);
        let b = _mm256_set_epi64x(8, 7, 6, 5);
        let r = _mm256_mask_alignr_epi64::<1>(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_alignr_epi64::<0>(a, 0b00001111, a, b);
        let e = _mm256_set_epi64x(8, 7, 6, 5);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_alignr_epi64() {
        let a = _mm256_set_epi64x(4, 3, 2, 1);
        let b = _mm256_set_epi64x(8, 7, 6, 5);
        let r = _mm256_maskz_alignr_epi64::<1>(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_alignr_epi64::<0>(0b00001111, a, b);
        let e = _mm256_set_epi64x(8, 7, 6, 5);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_alignr_epi64() {
        let a = _mm_set_epi64x(2, 1);
        let b = _mm_set_epi64x(4, 3);
        let r = _mm_alignr_epi64::<0>(a, b);
        let e = _mm_set_epi64x(4, 3);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_alignr_epi64() {
        let a = _mm_set_epi64x(2, 1);
        let b = _mm_set_epi64x(4, 3);
        let r = _mm_mask_alignr_epi64::<1>(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_alignr_epi64::<0>(a, 0b00000011, a, b);
        let e = _mm_set_epi64x(4, 3);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_alignr_epi64() {
        let a = _mm_set_epi64x(2, 1);
        let b = _mm_set_epi64x(4, 3);
        let r = _mm_maskz_alignr_epi64::<1>(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_alignr_epi64::<0>(0b00000011, a, b);
        let e = _mm_set_epi64x(4, 3);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_and_epi64() {
        let a = _mm512_set_epi64(1 << 0 | 1 << 15, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let b = _mm512_set_epi64(1 << 13, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let r = _mm512_and_epi64(a, b);
        let e = _mm512_set_epi64(0, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_and_epi64() {
        let a = _mm512_set_epi64(1 << 0 | 1 << 15, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let b = _mm512_set_epi64(1 << 13, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let r = _mm512_mask_and_epi64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_and_epi64(a, 0b01111111, a, b);
        let e = _mm512_set_epi64(1 << 0 | 1 << 15, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_and_epi64() {
        let a = _mm512_set_epi64(1 << 0 | 1 << 15, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let b = _mm512_set_epi64(1 << 13, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let r = _mm512_maskz_and_epi64(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_and_epi64(0b00001111, a, b);
        let e = _mm512_set_epi64(0, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_and_epi64() {
        let a = _mm256_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm256_set1_epi64x(1 << 0);
        let r = _mm256_mask_and_epi64(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_and_epi64(a, 0b00001111, a, b);
        let e = _mm256_set1_epi64x(1 << 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_and_epi64() {
        let a = _mm256_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm256_set1_epi64x(1 << 0);
        let r = _mm256_maskz_and_epi64(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_and_epi64(0b00001111, a, b);
        let e = _mm256_set1_epi64x(1 << 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_and_epi64() {
        let a = _mm_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm_set1_epi64x(1 << 0);
        let r = _mm_mask_and_epi64(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_and_epi64(a, 0b00000011, a, b);
        let e = _mm_set1_epi64x(1 << 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_and_epi64() {
        let a = _mm_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm_set1_epi64x(1 << 0);
        let r = _mm_maskz_and_epi64(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_and_epi64(0b00000011, a, b);
        let e = _mm_set1_epi64x(1 << 0);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_and_si512() {
        let a = _mm512_set_epi64(1 << 0 | 1 << 15, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let b = _mm512_set_epi64(1 << 13, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let r = _mm512_and_epi64(a, b);
        let e = _mm512_set_epi64(0, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_or_epi64() {
        let a = _mm512_set_epi64(1 << 0 | 1 << 15, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let b = _mm512_set_epi64(1 << 13, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let r = _mm512_or_epi64(a, b);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 0 | 1 << 13 | 1 << 15, 0, 0, 0,
            0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_or_epi64() {
        let a = _mm512_set_epi64(1 << 0 | 1 << 15, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let b = _mm512_set_epi64(1 << 13, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let r = _mm512_mask_or_epi64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_or_epi64(a, 0b11111111, a, b);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 0 | 1 << 13 | 1 << 15, 0, 0, 0,
            0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_or_epi64() {
        let a = _mm512_set_epi64(1 << 0 | 1 << 15, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let b = _mm512_set_epi64(1 << 13, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let r = _mm512_maskz_or_epi64(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_or_epi64(0b00001111, a, b);
        let e = _mm512_set_epi64(0, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_or_epi64() {
        let a = _mm256_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm256_set1_epi64x(1 << 13);
        let r = _mm256_or_epi64(a, b);
        let e = _mm256_set1_epi64x(1 << 0 | 1 << 13 | 1 << 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_or_epi64() {
        let a = _mm256_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm256_set1_epi64x(1 << 13);
        let r = _mm256_mask_or_epi64(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_or_epi64(a, 0b00001111, a, b);
        let e = _mm256_set1_epi64x(1 << 0 | 1 << 13 | 1 << 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_or_epi64() {
        let a = _mm256_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm256_set1_epi64x(1 << 13);
        let r = _mm256_maskz_or_epi64(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_or_epi64(0b00001111, a, b);
        let e = _mm256_set1_epi64x(1 << 0 | 1 << 13 | 1 << 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_or_epi64() {
        let a = _mm_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm_set1_epi64x(1 << 13);
        let r = _mm_or_epi64(a, b);
        let e = _mm_set1_epi64x(1 << 0 | 1 << 13 | 1 << 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_or_epi64() {
        let a = _mm_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm_set1_epi64x(1 << 13);
        let r = _mm_mask_or_epi64(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_or_epi64(a, 0b00000011, a, b);
        let e = _mm_set1_epi64x(1 << 0 | 1 << 13 | 1 << 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_or_epi64() {
        let a = _mm_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm_set1_epi64x(1 << 13);
        let r = _mm_maskz_or_epi64(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_or_epi64(0b00000011, a, b);
        let e = _mm_set1_epi64x(1 << 0 | 1 << 13 | 1 << 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_or_si512() {
        let a = _mm512_set_epi64(1 << 0 | 1 << 15, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let b = _mm512_set_epi64(1 << 13, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let r = _mm512_or_epi64(a, b);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            1 << 0 | 1 << 13 | 1 << 15, 0, 0, 0,
            0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_xor_epi64() {
        let a = _mm512_set_epi64(1 << 0 | 1 << 15, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let b = _mm512_set_epi64(1 << 13, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let r = _mm512_xor_epi64(a, b);
        let e = _mm512_set_epi64(1 << 0 | 1 << 13 | 1 << 15, 0, 0, 0, 0, 0, 0, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_xor_epi64() {
        let a = _mm512_set_epi64(1 << 0 | 1 << 15, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let b = _mm512_set_epi64(1 << 13, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let r = _mm512_mask_xor_epi64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_xor_epi64(a, 0b11111111, a, b);
        let e = _mm512_set_epi64(1 << 0 | 1 << 13 | 1 << 15, 0, 0, 0, 0, 0, 0, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_xor_epi64() {
        let a = _mm512_set_epi64(1 << 0 | 1 << 15, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let b = _mm512_set_epi64(1 << 13, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let r = _mm512_maskz_xor_epi64(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_xor_epi64(0b00001111, a, b);
        let e = _mm512_set_epi64(0, 0, 0, 0, 0, 0, 0, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_xor_epi64() {
        let a = _mm256_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm256_set1_epi64x(1 << 13);
        let r = _mm256_xor_epi64(a, b);
        let e = _mm256_set1_epi64x(1 << 0 | 1 << 13 | 1 << 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_xor_epi64() {
        let a = _mm256_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm256_set1_epi64x(1 << 13);
        let r = _mm256_mask_xor_epi64(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_xor_epi64(a, 0b00001111, a, b);
        let e = _mm256_set1_epi64x(1 << 0 | 1 << 13 | 1 << 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_xor_epi64() {
        let a = _mm256_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm256_set1_epi64x(1 << 13);
        let r = _mm256_maskz_xor_epi64(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_xor_epi64(0b00001111, a, b);
        let e = _mm256_set1_epi64x(1 << 0 | 1 << 13 | 1 << 15);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_xor_epi64() {
        let a = _mm_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm_set1_epi64x(1 << 13);
        let r = _mm_xor_epi64(a, b);
        let e = _mm_set1_epi64x(1 << 0 | 1 << 13 | 1 << 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_xor_epi64() {
        let a = _mm_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm_set1_epi64x(1 << 13);
        let r = _mm_mask_xor_epi64(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_xor_epi64(a, 0b00000011, a, b);
        let e = _mm_set1_epi64x(1 << 0 | 1 << 13 | 1 << 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_xor_epi64() {
        let a = _mm_set1_epi64x(1 << 0 | 1 << 15);
        let b = _mm_set1_epi64x(1 << 13);
        let r = _mm_maskz_xor_epi64(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_xor_epi64(0b00000011, a, b);
        let e = _mm_set1_epi64x(1 << 0 | 1 << 13 | 1 << 15);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_xor_si512() {
        let a = _mm512_set_epi64(1 << 0 | 1 << 15, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let b = _mm512_set_epi64(1 << 13, 0, 0, 0, 0, 0, 0, 1 << 1 | 1 << 2 | 1 << 3);
        let r = _mm512_xor_epi64(a, b);
        let e = _mm512_set_epi64(1 << 0 | 1 << 13 | 1 << 15, 0, 0, 0, 0, 0, 0, 0);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_andnot_epi64() {
        let a = _mm512_set1_epi64(0);
        let b = _mm512_set1_epi64(1 << 3 | 1 << 4);
        let r = _mm512_andnot_epi64(a, b);
        let e = _mm512_set1_epi64(1 << 3 | 1 << 4);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_andnot_epi64() {
        let a = _mm512_set1_epi64(1 << 1 | 1 << 2);
        let b = _mm512_set1_epi64(1 << 3 | 1 << 4);
        let r = _mm512_mask_andnot_epi64(a, 0, a, b);
        assert_eq_m512i(r, a);
        let r = _mm512_mask_andnot_epi64(a, 0b11111111, a, b);
        let e = _mm512_set1_epi64(1 << 3 | 1 << 4);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_andnot_epi64() {
        let a = _mm512_set1_epi64(1 << 1 | 1 << 2);
        let b = _mm512_set1_epi64(1 << 3 | 1 << 4);
        let r = _mm512_maskz_andnot_epi64(0, a, b);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_andnot_epi64(0b00001111, a, b);
        #[rustfmt::skip]
        let e = _mm512_set_epi64(
            0, 0, 0, 0,
            1 << 3 | 1 << 4, 1 << 3 | 1 << 4, 1 << 3 | 1 << 4, 1 << 3 | 1 << 4,
        );
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_andnot_epi64() {
        let a = _mm256_set1_epi64x(1 << 1 | 1 << 2);
        let b = _mm256_set1_epi64x(1 << 3 | 1 << 4);
        let r = _mm256_mask_andnot_epi64(a, 0, a, b);
        assert_eq_m256i(r, a);
        let r = _mm256_mask_andnot_epi64(a, 0b00001111, a, b);
        let e = _mm256_set1_epi64x(1 << 3 | 1 << 4);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_andnot_epi64() {
        let a = _mm256_set1_epi64x(1 << 1 | 1 << 2);
        let b = _mm256_set1_epi64x(1 << 3 | 1 << 4);
        let r = _mm256_maskz_andnot_epi64(0, a, b);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_andnot_epi64(0b00001111, a, b);
        let e = _mm256_set1_epi64x(1 << 3 | 1 << 4);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_andnot_epi64() {
        let a = _mm_set1_epi64x(1 << 1 | 1 << 2);
        let b = _mm_set1_epi64x(1 << 3 | 1 << 4);
        let r = _mm_mask_andnot_epi64(a, 0, a, b);
        assert_eq_m128i(r, a);
        let r = _mm_mask_andnot_epi64(a, 0b00000011, a, b);
        let e = _mm_set1_epi64x(1 << 3 | 1 << 4);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_andnot_epi64() {
        let a = _mm_set1_epi64x(1 << 1 | 1 << 2);
        let b = _mm_set1_epi64x(1 << 3 | 1 << 4);
        let r = _mm_maskz_andnot_epi64(0, a, b);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_andnot_epi64(0b00000011, a, b);
        let e = _mm_set1_epi64x(1 << 3 | 1 << 4);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_andnot_si512() {
        let a = _mm512_set1_epi64(0);
        let b = _mm512_set1_epi64(1 << 3 | 1 << 4);
        let r = _mm512_andnot_si512(a, b);
        let e = _mm512_set1_epi64(1 << 3 | 1 << 4);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_reduce_add_epi64() {
        let a = _mm512_set1_epi64(1);
        let e: i64 = _mm512_reduce_add_epi64(a);
        assert_eq!(8, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_reduce_add_epi64() {
        let a = _mm512_set1_epi64(1);
        let e: i64 = _mm512_mask_reduce_add_epi64(0b11110000, a);
        assert_eq!(4, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_reduce_add_pd() {
        let a = _mm512_set1_pd(1.);
        let e: f64 = _mm512_reduce_add_pd(a);
        assert_eq!(8., e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_reduce_add_pd() {
        let a = _mm512_set1_pd(1.);
        let e: f64 = _mm512_mask_reduce_add_pd(0b11110000, a);
        assert_eq!(4., e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_reduce_mul_epi64() {
        let a = _mm512_set1_epi64(2);
        let e: i64 = _mm512_reduce_mul_epi64(a);
        assert_eq!(256, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_reduce_mul_epi64() {
        let a = _mm512_set1_epi64(2);
        let e: i64 = _mm512_mask_reduce_mul_epi64(0b11110000, a);
        assert_eq!(16, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_reduce_mul_pd() {
        let a = _mm512_set1_pd(2.);
        let e: f64 = _mm512_reduce_mul_pd(a);
        assert_eq!(256., e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_reduce_mul_pd() {
        let a = _mm512_set1_pd(2.);
        let e: f64 = _mm512_mask_reduce_mul_pd(0b11110000, a);
        assert_eq!(16., e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_reduce_max_epi64() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let e: i64 = _mm512_reduce_max_epi64(a);
        assert_eq!(7, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_reduce_max_epi64() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let e: i64 = _mm512_mask_reduce_max_epi64(0b11110000, a);
        assert_eq!(3, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_reduce_max_epu64() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let e: u64 = _mm512_reduce_max_epu64(a);
        assert_eq!(7, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_reduce_max_epu64() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let e: u64 = _mm512_mask_reduce_max_epu64(0b11110000, a);
        assert_eq!(3, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_reduce_max_pd() {
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let e: f64 = _mm512_reduce_max_pd(a);
        assert_eq!(7., e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_reduce_max_pd() {
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let e: f64 = _mm512_mask_reduce_max_pd(0b11110000, a);
        assert_eq!(3., e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_reduce_min_epi64() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let e: i64 = _mm512_reduce_min_epi64(a);
        assert_eq!(0, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_reduce_min_epi64() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let e: i64 = _mm512_mask_reduce_min_epi64(0b11110000, a);
        assert_eq!(0, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_reduce_min_epu64() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let e: u64 = _mm512_reduce_min_epu64(a);
        assert_eq!(0, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_reduce_min_epu64() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let e: u64 = _mm512_mask_reduce_min_epu64(0b11110000, a);
        assert_eq!(0, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_reduce_min_pd() {
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let e: f64 = _mm512_reduce_min_pd(a);
        assert_eq!(0., e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_reduce_min_pd() {
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let e: f64 = _mm512_mask_reduce_min_pd(0b11110000, a);
        assert_eq!(0., e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_reduce_and_epi64() {
        let a = _mm512_set_epi64(1, 1, 1, 1, 2, 2, 2, 2);
        let e: i64 = _mm512_reduce_and_epi64(a);
        assert_eq!(0, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_reduce_and_epi64() {
        let a = _mm512_set_epi64(1, 1, 1, 1, 2, 2, 2, 2);
        let e: i64 = _mm512_mask_reduce_and_epi64(0b11110000, a);
        assert_eq!(1, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_reduce_or_epi64() {
        let a = _mm512_set_epi64(1, 1, 1, 1, 2, 2, 2, 2);
        let e: i64 = _mm512_reduce_or_epi64(a);
        assert_eq!(3, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_reduce_or_epi64() {
        let a = _mm512_set_epi64(1, 1, 1, 1, 2, 2, 2, 2);
        let e: i64 = _mm512_mask_reduce_or_epi64(0b11110000, a);
        assert_eq!(1, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_extractf64x4_pd() {
        let a = _mm512_setr_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let r = _mm512_extractf64x4_pd::<1>(a);
        let e = _mm256_setr_pd(5., 6., 7., 8.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_extractf64x4_pd() {
        let a = _mm512_setr_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let src = _mm256_set1_pd(100.);
        let r = _mm512_mask_extractf64x4_pd::<1>(src, 0, a);
        assert_eq_m256d(r, src);
        let r = _mm512_mask_extractf64x4_pd::<1>(src, 0b11111111, a);
        let e = _mm256_setr_pd(5., 6., 7., 8.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_extractf64x4_pd() {
        let a = _mm512_setr_pd(1., 2., 3., 4., 5., 6., 7., 8.);
        let r = _mm512_maskz_extractf64x4_pd::<1>(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm512_maskz_extractf64x4_pd::<1>(0b00000001, a);
        let e = _mm256_setr_pd(5., 0., 0., 0.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_extracti64x4_epi64() {
        let a = _mm512_setr_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        let r = _mm512_extracti64x4_epi64::<0x1>(a);
        let e = _mm256_setr_epi64x(5, 6, 7, 8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_extracti64x4_epi64() {
        let a = _mm512_setr_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        let src = _mm256_set1_epi64x(100);
        let r = _mm512_mask_extracti64x4_epi64::<0x1>(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm512_mask_extracti64x4_epi64::<0x1>(src, 0b11111111, a);
        let e = _mm256_setr_epi64x(5, 6, 7, 8);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_extracti64x4_epi64() {
        let a = _mm512_setr_epi64(1, 2, 3, 4, 5, 6, 7, 8);
        let r = _mm512_maskz_extracti64x4_epi64::<0x1>(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm512_maskz_extracti64x4_epi64::<0x1>(0b00000001, a);
        let e = _mm256_setr_epi64x(5, 0, 0, 0);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_compress_epi64() {
        let src = _mm512_set1_epi64(200);
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_mask_compress_epi64(src, 0, a);
        assert_eq_m512i(r, src);
        let r = _mm512_mask_compress_epi64(src, 0b01010101, a);
        let e = _mm512_set_epi64(200, 200, 200, 200, 1, 3, 5, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_compress_epi64() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_maskz_compress_epi64(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_compress_epi64(0b01010101, a);
        let e = _mm512_set_epi64(0, 0, 0, 0, 1, 3, 5, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_compress_epi64() {
        let src = _mm256_set1_epi64x(200);
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_mask_compress_epi64(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm256_mask_compress_epi64(src, 0b00000101, a);
        let e = _mm256_set_epi64x(200, 200, 1, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_compress_epi64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_maskz_compress_epi64(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_compress_epi64(0b00000101, a);
        let e = _mm256_set_epi64x(0, 0, 1, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_compress_epi64() {
        let src = _mm_set1_epi64x(200);
        let a = _mm_set_epi64x(0, 1);
        let r = _mm_mask_compress_epi64(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_compress_epi64(src, 0b00000001, a);
        let e = _mm_set_epi64x(200, 1);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_compress_epi64() {
        let a = _mm_set_epi64x(0, 1);
        let r = _mm_maskz_compress_epi64(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_compress_epi64(0b00000001, a);
        let e = _mm_set_epi64x(0, 1);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_compress_pd() {
        let src = _mm512_set1_pd(200.);
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let r = _mm512_mask_compress_pd(src, 0, a);
        assert_eq_m512d(r, src);
        let r = _mm512_mask_compress_pd(src, 0b01010101, a);
        let e = _mm512_set_pd(200., 200., 200., 200., 1., 3., 5., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_compress_pd() {
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let r = _mm512_maskz_compress_pd(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_compress_pd(0b01010101, a);
        let e = _mm512_set_pd(0., 0., 0., 0., 1., 3., 5., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_compress_pd() {
        let src = _mm256_set1_pd(200.);
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let r = _mm256_mask_compress_pd(src, 0, a);
        assert_eq_m256d(r, src);
        let r = _mm256_mask_compress_pd(src, 0b00000101, a);
        let e = _mm256_set_pd(200., 200., 1., 3.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_compress_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let r = _mm256_maskz_compress_pd(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_compress_pd(0b00000101, a);
        let e = _mm256_set_pd(0., 0., 1., 3.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_compress_pd() {
        let src = _mm_set1_pd(200.);
        let a = _mm_set_pd(0., 1.);
        let r = _mm_mask_compress_pd(src, 0, a);
        assert_eq_m128d(r, src);
        let r = _mm_mask_compress_pd(src, 0b00000001, a);
        let e = _mm_set_pd(200., 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_compress_pd() {
        let a = _mm_set_pd(0., 1.);
        let r = _mm_maskz_compress_pd(0, a);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_compress_pd(0b00000001, a);
        let e = _mm_set_pd(0., 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_expand_epi64() {
        let src = _mm512_set1_epi64(200);
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_mask_expand_epi64(src, 0, a);
        assert_eq_m512i(r, src);
        let r = _mm512_mask_expand_epi64(src, 0b01010101, a);
        let e = _mm512_set_epi64(200, 4, 200, 5, 200, 6, 200, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_expand_epi64() {
        let a = _mm512_set_epi64(0, 1, 2, 3, 4, 5, 6, 7);
        let r = _mm512_maskz_expand_epi64(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_expand_epi64(0b01010101, a);
        let e = _mm512_set_epi64(0, 4, 0, 5, 0, 6, 0, 7);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_expand_epi64() {
        let src = _mm256_set1_epi64x(200);
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_mask_expand_epi64(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm256_mask_expand_epi64(src, 0b00000101, a);
        let e = _mm256_set_epi64x(200, 2, 200, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_expand_epi64() {
        let a = _mm256_set_epi64x(0, 1, 2, 3);
        let r = _mm256_maskz_expand_epi64(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_expand_epi64(0b00000101, a);
        let e = _mm256_set_epi64x(0, 2, 0, 3);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_expand_epi64() {
        let src = _mm_set1_epi64x(200);
        let a = _mm_set_epi64x(0, 1);
        let r = _mm_mask_expand_epi64(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_expand_epi64(src, 0b00000001, a);
        let e = _mm_set_epi64x(200, 1);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_expand_epi64() {
        let a = _mm_set_epi64x(0, 1);
        let r = _mm_maskz_expand_epi64(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_expand_epi64(0b00000001, a);
        let e = _mm_set_epi64x(0, 1);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_expand_pd() {
        let src = _mm512_set1_pd(200.);
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let r = _mm512_mask_expand_pd(src, 0, a);
        assert_eq_m512d(r, src);
        let r = _mm512_mask_expand_pd(src, 0b01010101, a);
        let e = _mm512_set_pd(200., 4., 200., 5., 200., 6., 200., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_expand_pd() {
        let a = _mm512_set_pd(0., 1., 2., 3., 4., 5., 6., 7.);
        let r = _mm512_maskz_expand_pd(0, a);
        assert_eq_m512d(r, _mm512_setzero_pd());
        let r = _mm512_maskz_expand_pd(0b01010101, a);
        let e = _mm512_set_pd(0., 4., 0., 5., 0., 6., 0., 7.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_expand_pd() {
        let src = _mm256_set1_pd(200.);
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let r = _mm256_mask_expand_pd(src, 0, a);
        assert_eq_m256d(r, src);
        let r = _mm256_mask_expand_pd(src, 0b00000101, a);
        let e = _mm256_set_pd(200., 2., 200., 3.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_expand_pd() {
        let a = _mm256_set_pd(0., 1., 2., 3.);
        let r = _mm256_maskz_expand_pd(0, a);
        assert_eq_m256d(r, _mm256_setzero_pd());
        let r = _mm256_maskz_expand_pd(0b00000101, a);
        let e = _mm256_set_pd(0., 2., 0., 3.);
        assert_eq_m256d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_expand_pd() {
        let src = _mm_set1_pd(200.);
        let a = _mm_set_pd(0., 1.);
        let r = _mm_mask_expand_pd(src, 0, a);
        assert_eq_m128d(r, src);
        let r = _mm_mask_expand_pd(src, 0b00000001, a);
        let e = _mm_set_pd(200., 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_expand_pd() {
        let a = _mm_set_pd(0., 1.);
        let r = _mm_maskz_expand_pd(0, a);
        assert_eq_m128d(r, _mm_setzero_pd());
        let r = _mm_maskz_expand_pd(0b00000001, a);
        let e = _mm_set_pd(0., 1.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_loadu_epi64() {
        let a = &[4, 3, 2, 5, -8, -9, -64, -50];
        let p = a.as_ptr();
        let r = _mm512_loadu_epi64(black_box(p));
        let e = _mm512_setr_epi64(4, 3, 2, 5, -8, -9, -64, -50);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_loadu_epi64() {
        let a = &[4, 3, 2, 5];
        let p = a.as_ptr();
        let r = _mm256_loadu_epi64(black_box(p));
        let e = _mm256_setr_epi64x(4, 3, 2, 5);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_loadu_epi64() {
        let a = &[4, 3];
        let p = a.as_ptr();
        let r = _mm_loadu_epi64(black_box(p));
        let e = _mm_setr_epi64x(4, 3);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepi64_storeu_epi16() {
        let a = _mm512_set1_epi64(9);
        let mut r = _mm_undefined_si128();
        _mm512_mask_cvtepi64_storeu_epi16(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set1_epi16(9);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtepi64_storeu_epi16() {
        let a = _mm256_set1_epi64x(9);
        let mut r = _mm_set1_epi16(0);
        _mm256_mask_cvtepi64_storeu_epi16(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 9, 9, 9, 9);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtepi64_storeu_epi16() {
        let a = _mm_set1_epi64x(9);
        let mut r = _mm_set1_epi16(0);
        _mm_mask_cvtepi64_storeu_epi16(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 0, 0, 9, 9);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtsepi64_storeu_epi16() {
        let a = _mm512_set1_epi64(i64::MAX);
        let mut r = _mm_undefined_si128();
        _mm512_mask_cvtsepi64_storeu_epi16(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set1_epi16(i16::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtsepi64_storeu_epi16() {
        let a = _mm256_set1_epi64x(i64::MAX);
        let mut r = _mm_set1_epi16(0);
        _mm256_mask_cvtsepi64_storeu_epi16(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, i16::MAX, i16::MAX, i16::MAX, i16::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtsepi64_storeu_epi16() {
        let a = _mm_set1_epi64x(i64::MAX);
        let mut r = _mm_set1_epi16(0);
        _mm_mask_cvtsepi64_storeu_epi16(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 0, 0, i16::MAX, i16::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtusepi64_storeu_epi16() {
        let a = _mm512_set1_epi64(i64::MAX);
        let mut r = _mm_undefined_si128();
        _mm512_mask_cvtusepi64_storeu_epi16(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set1_epi16(u16::MAX as i16);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtusepi64_storeu_epi16() {
        let a = _mm256_set1_epi64x(i64::MAX);
        let mut r = _mm_set1_epi16(0);
        _mm256_mask_cvtusepi64_storeu_epi16(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set_epi16(
            0,
            0,
            0,
            0,
            u16::MAX as i16,
            u16::MAX as i16,
            u16::MAX as i16,
            u16::MAX as i16,
        );
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtusepi64_storeu_epi16() {
        let a = _mm_set1_epi64x(i64::MAX);
        let mut r = _mm_set1_epi16(0);
        _mm_mask_cvtusepi64_storeu_epi16(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set_epi16(0, 0, 0, 0, 0, 0, u16::MAX as i16, u16::MAX as i16);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepi64_storeu_epi8() {
        let a = _mm512_set1_epi64(9);
        let mut r = _mm_set1_epi8(0);
        _mm512_mask_cvtepi64_storeu_epi8(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtepi64_storeu_epi8() {
        let a = _mm256_set1_epi64x(9);
        let mut r = _mm_set1_epi8(0);
        _mm256_mask_cvtepi64_storeu_epi8(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtepi64_storeu_epi8() {
        let a = _mm_set1_epi64x(9);
        let mut r = _mm_set1_epi8(0);
        _mm_mask_cvtepi64_storeu_epi8(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtsepi64_storeu_epi8() {
        let a = _mm512_set1_epi64(i64::MAX);
        let mut r = _mm_set1_epi8(0);
        _mm512_mask_cvtsepi64_storeu_epi8(&mut r as *mut _ as *mut i8, 0b11111111, a);
        #[rustfmt::skip]
        let e = _mm_set_epi8(
            0, 0, 0, 0,
            0, 0, 0, 0,
            i8::MAX, i8::MAX, i8::MAX, i8::MAX,
            i8::MAX, i8::MAX, i8::MAX, i8::MAX,
        );
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtsepi64_storeu_epi8() {
        let a = _mm256_set1_epi64x(i64::MAX);
        let mut r = _mm_set1_epi8(0);
        _mm256_mask_cvtsepi64_storeu_epi8(&mut r as *mut _ as *mut i8, 0b11111111, a);
        #[rustfmt::skip]
        let e = _mm_set_epi8(
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            i8::MAX, i8::MAX, i8::MAX, i8::MAX,
        );
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtsepi64_storeu_epi8() {
        let a = _mm_set1_epi64x(i64::MAX);
        let mut r = _mm_set1_epi8(0);
        _mm_mask_cvtsepi64_storeu_epi8(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, i8::MAX, i8::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtusepi64_storeu_epi8() {
        let a = _mm512_set1_epi64(i64::MAX);
        let mut r = _mm_set1_epi8(0);
        _mm512_mask_cvtusepi64_storeu_epi8(&mut r as *mut _ as *mut i8, 0b11111111, a);
        #[rustfmt::skip]
        let e = _mm_set_epi8(
            0, 0, 0, 0,
            0, 0, 0, 0,
            u8::MAX as i8, u8::MAX as i8, u8::MAX as i8, u8::MAX as i8,
            u8::MAX as i8, u8::MAX as i8, u8::MAX as i8, u8::MAX as i8,
        );
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtusepi64_storeu_epi8() {
        let a = _mm256_set1_epi64x(i64::MAX);
        let mut r = _mm_set1_epi8(0);
        _mm256_mask_cvtusepi64_storeu_epi8(&mut r as *mut _ as *mut i8, 0b11111111, a);
        #[rustfmt::skip]
        let e = _mm_set_epi8(
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            u8::MAX as i8, u8::MAX as i8, u8::MAX as i8, u8::MAX as i8,
        );
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtusepi64_storeu_epi8() {
        let a = _mm_set1_epi64x(i64::MAX);
        let mut r = _mm_set1_epi8(0);
        _mm_mask_cvtusepi64_storeu_epi8(&mut r as *mut _ as *mut i8, 0b11111111, a);
        #[rustfmt::skip]
        let e = _mm_set_epi8(
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, 0, 0,
            0, 0, u8::MAX as i8, u8::MAX as i8,
        );
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtepi64_storeu_epi32() {
        let a = _mm512_set1_epi64(9);
        let mut r = _mm256_undefined_si256();
        _mm512_mask_cvtepi64_storeu_epi32(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm256_set1_epi32(9);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtepi64_storeu_epi32() {
        let a = _mm256_set1_epi64x(9);
        let mut r = _mm_set1_epi32(0);
        _mm256_mask_cvtepi64_storeu_epi32(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set_epi32(9, 9, 9, 9);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtepi64_storeu_epi32() {
        let a = _mm_set1_epi64x(9);
        let mut r = _mm_set1_epi16(0);
        _mm_mask_cvtepi64_storeu_epi32(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm_set_epi32(0, 0, 9, 9);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtsepi64_storeu_epi32() {
        let a = _mm512_set1_epi64(i64::MAX);
        let mut r = _mm256_undefined_si256();
        _mm512_mask_cvtsepi64_storeu_epi32(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm256_set1_epi32(i32::MAX);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtsepi64_storeu_epi32() {
        let a = _mm256_set1_epi64x(i64::MAX);
        let mut r = _mm_set1_epi32(0);
        _mm256_mask_cvtsepi64_storeu_epi32(&mut r as *mut _ as *mut i8, 0b00001111, a);
        let e = _mm_set1_epi32(i32::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtsepi64_storeu_epi32() {
        let a = _mm_set1_epi64x(i64::MAX);
        let mut r = _mm_set1_epi16(0);
        _mm_mask_cvtsepi64_storeu_epi32(&mut r as *mut _ as *mut i8, 0b00000011, a);
        let e = _mm_set_epi32(0, 0, i32::MAX, i32::MAX);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_cvtusepi64_storeu_epi32() {
        let a = _mm512_set1_epi64(i64::MAX);
        let mut r = _mm256_undefined_si256();
        _mm512_mask_cvtusepi64_storeu_epi32(&mut r as *mut _ as *mut i8, 0b11111111, a);
        let e = _mm256_set1_epi32(u32::MAX as i32);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_cvtusepi64_storeu_epi32() {
        let a = _mm256_set1_epi64x(i64::MAX);
        let mut r = _mm_set1_epi32(0);
        _mm256_mask_cvtusepi64_storeu_epi32(&mut r as *mut _ as *mut i8, 0b00001111, a);
        let e = _mm_set1_epi32(u32::MAX as i32);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_cvtusepi64_storeu_epi32() {
        let a = _mm_set1_epi64x(i64::MAX);
        let mut r = _mm_set1_epi16(0);
        _mm_mask_cvtusepi64_storeu_epi32(&mut r as *mut _ as *mut i8, 0b00000011, a);
        let e = _mm_set_epi32(0, 0, u32::MAX as i32, u32::MAX as i32);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_storeu_epi64() {
        let a = _mm512_set1_epi64(9);
        let mut r = _mm512_set1_epi64(0);
        _mm512_storeu_epi64(&mut r as *mut _ as *mut i64, a);
        assert_eq_m512i(r, a);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_storeu_epi64() {
        let a = _mm256_set1_epi64x(9);
        let mut r = _mm256_set1_epi64x(0);
        _mm256_storeu_epi64(&mut r as *mut _ as *mut i64, a);
        assert_eq_m256i(r, a);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_storeu_epi64() {
        let a = _mm_set1_epi64x(9);
        let mut r = _mm_set1_epi64x(0);
        _mm_storeu_epi64(&mut r as *mut _ as *mut i64, a);
        assert_eq_m128i(r, a);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_load_epi64() {
        #[repr(align(64))]
        struct Align {
            data: [i64; 8], // 64 bytes
        }
        let a = Align {
            data: [4, 3, 2, 5, -8, -9, -64, -50],
        };
        let p = (a.data).as_ptr();
        let r = _mm512_load_epi64(black_box(p));
        let e = _mm512_setr_epi64(4, 3, 2, 5, -8, -9, -64, -50);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_load_epi64() {
        #[repr(align(64))]
        struct Align {
            data: [i64; 4],
        }
        let a = Align { data: [4, 3, 2, 5] };
        let p = (a.data).as_ptr();
        let r = _mm256_load_epi64(black_box(p));
        let e = _mm256_set_epi64x(5, 2, 3, 4);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_load_epi64() {
        #[repr(align(64))]
        struct Align {
            data: [i64; 2],
        }
        let a = Align { data: [4, 3] };
        let p = (a.data).as_ptr();
        let r = _mm_load_epi64(black_box(p));
        let e = _mm_set_epi64x(3, 4);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_store_epi64() {
        let a = _mm512_set1_epi64(9);
        let mut r = _mm512_set1_epi64(0);
        _mm512_store_epi64(&mut r as *mut _ as *mut i64, a);
        assert_eq_m512i(r, a);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_store_epi64() {
        let a = _mm256_set1_epi64x(9);
        let mut r = _mm256_set1_epi64x(0);
        _mm256_store_epi64(&mut r as *mut _ as *mut i64, a);
        assert_eq_m256i(r, a);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_store_epi64() {
        let a = _mm_set1_epi64x(9);
        let mut r = _mm_set1_epi64x(0);
        _mm_store_epi64(&mut r as *mut _ as *mut i64, a);
        assert_eq_m128i(r, a);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_load_pd() {
        #[repr(align(64))]
        struct Align {
            data: [f64; 8], // 64 bytes
        }
        let a = Align {
            data: [4., 3., 2., 5., -8., -9., -64., -50.],
        };
        let p = (a.data).as_ptr();
        let r = _mm512_load_pd(black_box(p));
        let e = _mm512_setr_pd(4., 3., 2., 5., -8., -9., -64., -50.);
        assert_eq_m512d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_store_pd() {
        let a = _mm512_set1_pd(9.);
        let mut r = _mm512_undefined_pd();
        _mm512_store_pd(&mut r as *mut _ as *mut f64, a);
        assert_eq_m512d(r, a);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_test_epi64_mask() {
        let a = _mm512_set1_epi64(1 << 0);
        let b = _mm512_set1_epi64(1 << 0 | 1 << 1);
        let r = _mm512_test_epi64_mask(a, b);
        let e: __mmask8 = 0b11111111;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_test_epi64_mask() {
        let a = _mm512_set1_epi64(1 << 0);
        let b = _mm512_set1_epi64(1 << 0 | 1 << 1);
        let r = _mm512_mask_test_epi64_mask(0, a, b);
        assert_eq!(r, 0);
        let r = _mm512_mask_test_epi64_mask(0b11111111, a, b);
        let e: __mmask8 = 0b11111111;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_test_epi64_mask() {
        let a = _mm256_set1_epi64x(1 << 0);
        let b = _mm256_set1_epi64x(1 << 0 | 1 << 1);
        let r = _mm256_test_epi64_mask(a, b);
        let e: __mmask8 = 0b00001111;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_test_epi64_mask() {
        let a = _mm256_set1_epi64x(1 << 0);
        let b = _mm256_set1_epi64x(1 << 0 | 1 << 1);
        let r = _mm256_mask_test_epi64_mask(0, a, b);
        assert_eq!(r, 0);
        let r = _mm256_mask_test_epi64_mask(0b00001111, a, b);
        let e: __mmask8 = 0b00001111;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_test_epi64_mask() {
        let a = _mm_set1_epi64x(1 << 0);
        let b = _mm_set1_epi64x(1 << 0 | 1 << 1);
        let r = _mm_test_epi64_mask(a, b);
        let e: __mmask8 = 0b00000011;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_test_epi64_mask() {
        let a = _mm_set1_epi64x(1 << 0);
        let b = _mm_set1_epi64x(1 << 0 | 1 << 1);
        let r = _mm_mask_test_epi64_mask(0, a, b);
        assert_eq!(r, 0);
        let r = _mm_mask_test_epi64_mask(0b00000011, a, b);
        let e: __mmask8 = 0b00000011;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_testn_epi64_mask() {
        let a = _mm512_set1_epi64(1 << 0);
        let b = _mm512_set1_epi64(1 << 0 | 1 << 1);
        let r = _mm512_testn_epi64_mask(a, b);
        let e: __mmask8 = 0b00000000;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_testn_epi64_mask() {
        let a = _mm512_set1_epi64(1 << 0);
        let b = _mm512_set1_epi64(1 << 1);
        let r = _mm512_mask_testn_epi64_mask(0, a, b);
        assert_eq!(r, 0);
        let r = _mm512_mask_testn_epi64_mask(0b11111111, a, b);
        let e: __mmask8 = 0b11111111;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_testn_epi64_mask() {
        let a = _mm256_set1_epi64x(1 << 0);
        let b = _mm256_set1_epi64x(1 << 1);
        let r = _mm256_testn_epi64_mask(a, b);
        let e: __mmask8 = 0b00001111;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_testn_epi64_mask() {
        let a = _mm256_set1_epi64x(1 << 0);
        let b = _mm256_set1_epi64x(1 << 1);
        let r = _mm256_mask_testn_epi64_mask(0, a, b);
        assert_eq!(r, 0);
        let r = _mm256_mask_testn_epi64_mask(0b11111111, a, b);
        let e: __mmask8 = 0b00001111;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_testn_epi64_mask() {
        let a = _mm_set1_epi64x(1 << 0);
        let b = _mm_set1_epi64x(1 << 1);
        let r = _mm_testn_epi64_mask(a, b);
        let e: __mmask8 = 0b00000011;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_testn_epi64_mask() {
        let a = _mm_set1_epi64x(1 << 0);
        let b = _mm_set1_epi64x(1 << 1);
        let r = _mm_mask_testn_epi64_mask(0, a, b);
        assert_eq!(r, 0);
        let r = _mm_mask_testn_epi64_mask(0b11111111, a, b);
        let e: __mmask8 = 0b00000011;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_stream_pd() {
        #[repr(align(64))]
        struct Memory {
            pub data: [f64; 8],
        }
        let a = _mm512_set1_pd(7.0);
        let mut mem = Memory { data: [-1.0; 8] };

        _mm512_stream_pd(&mut mem.data[0] as *mut f64, a);
        for i in 0..8 {
            assert_eq!(mem.data[i], get_m512d(a, i));
        }
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_stream_si512() {
        #[repr(align(64))]
        struct Memory {
            pub data: [i64; 8],
        }
        let a = _mm512_set1_epi64(7);
        let mut mem = Memory { data: [-1; 8] };

        _mm512_stream_si512(&mut mem.data[0] as *mut i64, a);
        for i in 0..8 {
            assert_eq!(mem.data[i], get_m512i(a, i));
        }
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_mask_set1_epi64() {
        let src = _mm512_set1_epi64(2);
        let a: i64 = 11;
        let r = _mm512_mask_set1_epi64(src, 0, a);
        assert_eq_m512i(r, src);
        let r = _mm512_mask_set1_epi64(src, 0b11111111, a);
        let e = _mm512_set1_epi64(11);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm512_maskz_set1_epi64() {
        let a: i64 = 11;
        let r = _mm512_maskz_set1_epi64(0, a);
        assert_eq_m512i(r, _mm512_setzero_si512());
        let r = _mm512_maskz_set1_epi64(0b11111111, a);
        let e = _mm512_set1_epi64(11);
        assert_eq_m512i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_mask_set1_epi64() {
        let src = _mm256_set1_epi64x(2);
        let a: i64 = 11;
        let r = _mm256_mask_set1_epi64(src, 0, a);
        assert_eq_m256i(r, src);
        let r = _mm256_mask_set1_epi64(src, 0b00001111, a);
        let e = _mm256_set1_epi64x(11);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm256_maskz_set1_epi64() {
        let a: i64 = 11;
        let r = _mm256_maskz_set1_epi64(0, a);
        assert_eq_m256i(r, _mm256_setzero_si256());
        let r = _mm256_maskz_set1_epi64(0b00001111, a);
        let e = _mm256_set1_epi64x(11);
        assert_eq_m256i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_mask_set1_epi64() {
        let src = _mm_set1_epi64x(2);
        let a: i64 = 11;
        let r = _mm_mask_set1_epi64(src, 0, a);
        assert_eq_m128i(r, src);
        let r = _mm_mask_set1_epi64(src, 0b00000011, a);
        let e = _mm_set1_epi64x(11);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f,avx512vl")]
    unsafe fn test_mm_maskz_set1_epi64() {
        let a: i64 = 11;
        let r = _mm_maskz_set1_epi64(0, a);
        assert_eq_m128i(r, _mm_setzero_si128());
        let r = _mm_maskz_set1_epi64(0b00000011, a);
        let e = _mm_set1_epi64x(11);
        assert_eq_m128i(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvtsd_i64() {
        let a = _mm_set_pd(1., -1.5);
        let r = _mm_cvtsd_i64(a);
        let e: i64 = -2;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvtss_i64() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let r = _mm_cvtss_i64(a);
        let e: i64 = -2;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvt_roundi64_ss() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let b: i64 = 9;
        let r = _mm_cvt_roundi64_ss::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm_set_ps(0., -0.5, 1., 9.);
        assert_eq_m128(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvt_roundsi64_ss() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let b: i64 = 9;
        let r = _mm_cvt_roundsi64_ss::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm_set_ps(0., -0.5, 1., 9.);
        assert_eq_m128(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvti64_ss() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let b: i64 = 9;
        let r = _mm_cvti64_ss(a, b);
        let e = _mm_set_ps(0., -0.5, 1., 9.);
        assert_eq_m128(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvti64_sd() {
        let a = _mm_set_pd(1., -1.5);
        let b: i64 = 9;
        let r = _mm_cvti64_sd(a, b);
        let e = _mm_set_pd(1., 9.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvt_roundsd_si64() {
        let a = _mm_set_pd(1., -1.5);
        let r = _mm_cvt_roundsd_si64::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a);
        let e: i64 = -1;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvt_roundsd_i64() {
        let a = _mm_set_pd(1., -1.5);
        let r = _mm_cvt_roundsd_i64::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a);
        let e: i64 = -1;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvt_roundsd_u64() {
        let a = _mm_set_pd(1., f64::MAX);
        let r = _mm_cvt_roundsd_u64::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a);
        let e: u64 = u64::MAX;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvtsd_u64() {
        let a = _mm_set_pd(1., -1.5);
        let r = _mm_cvtsd_u64(a);
        let e: u64 = u64::MAX;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvt_roundss_i64() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let r = _mm_cvt_roundss_i64::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a);
        let e: i64 = -1;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvt_roundss_si64() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let r = _mm_cvt_roundss_si64::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a);
        let e: i64 = -1;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvt_roundss_u64() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let r = _mm_cvt_roundss_u64::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a);
        let e: u64 = u64::MAX;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvtss_u64() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let r = _mm_cvtss_u64(a);
        let e: u64 = u64::MAX;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvttsd_i64() {
        let a = _mm_set_pd(1., -1.5);
        let r = _mm_cvttsd_i64(a);
        let e: i64 = -2;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvtt_roundsd_i64() {
        let a = _mm_set_pd(1., -1.5);
        let r = _mm_cvtt_roundsd_i64::<_MM_FROUND_CUR_DIRECTION>(a);
        let e: i64 = -2;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvtt_roundsd_si64() {
        let a = _mm_set_pd(1., -1.5);
        let r = _mm_cvtt_roundsd_si64::<_MM_FROUND_CUR_DIRECTION>(a);
        let e: i64 = -2;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvtt_roundsd_u64() {
        let a = _mm_set_pd(1., -1.5);
        let r = _mm_cvtt_roundsd_u64::<_MM_FROUND_CUR_DIRECTION>(a);
        let e: u64 = u64::MAX;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvttsd_u64() {
        let a = _mm_set_pd(1., -1.5);
        let r = _mm_cvttsd_u64(a);
        let e: u64 = u64::MAX;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvttss_i64() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let r = _mm_cvttss_i64(a);
        let e: i64 = -2;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvtt_roundss_i64() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let r = _mm_cvtt_roundss_i64::<_MM_FROUND_CUR_DIRECTION>(a);
        let e: i64 = -2;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvtt_roundss_si64() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let r = _mm_cvtt_roundss_si64::<_MM_FROUND_CUR_DIRECTION>(a);
        let e: i64 = -2;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvtt_roundss_u64() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let r = _mm_cvtt_roundss_u64::<_MM_FROUND_CUR_DIRECTION>(a);
        let e: u64 = u64::MAX;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvttss_u64() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let r = _mm_cvttss_u64(a);
        let e: u64 = u64::MAX;
        assert_eq!(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvtu64_ss() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let b: u64 = 9;
        let r = _mm_cvtu64_ss(a, b);
        let e = _mm_set_ps(0., -0.5, 1., 9.);
        assert_eq_m128(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvtu64_sd() {
        let a = _mm_set_pd(1., -1.5);
        let b: u64 = 9;
        let r = _mm_cvtu64_sd(a, b);
        let e = _mm_set_pd(1., 9.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvt_roundu64_ss() {
        let a = _mm_set_ps(0., -0.5, 1., -1.5);
        let b: u64 = 9;
        let r = _mm_cvt_roundu64_ss::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm_set_ps(0., -0.5, 1., 9.);
        assert_eq_m128(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvt_roundu64_sd() {
        let a = _mm_set_pd(1., -1.5);
        let b: u64 = 9;
        let r = _mm_cvt_roundu64_sd::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm_set_pd(1., 9.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvt_roundi64_sd() {
        let a = _mm_set_pd(1., -1.5);
        let b: i64 = 9;
        let r = _mm_cvt_roundi64_sd::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm_set_pd(1., 9.);
        assert_eq_m128d(r, e);
    }

    #[simd_test(enable = "avx512f")]
    unsafe fn test_mm_cvt_roundsi64_sd() {
        let a = _mm_set_pd(1., -1.5);
        let b: i64 = 9;
        let r = _mm_cvt_roundsi64_sd::<{ _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC }>(a, b);
        let e = _mm_set_pd(1., 9.);
        assert_eq_m128d(r, e);
    }
}
