some avx512 to const generics (#1039)
This commit is contained in:
parent
4edfa34423
commit
2d48c702be
3 changed files with 922 additions and 1422 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -16,6 +16,22 @@ macro_rules! static_assert_rounding {
|
|||
};
|
||||
}
|
||||
|
||||
// Helper struct used to trigger const eval errors when the const generic immediate value `imm` is
|
||||
// not a sae number.
|
||||
pub(crate) struct ValidateConstSae<const IMM: i32>;
|
||||
impl<const IMM: i32> ValidateConstSae<IMM> {
|
||||
pub(crate) const VALID: () = {
|
||||
let _ = 1 / ((IMM == 4 || IMM == 8) as usize);
|
||||
};
|
||||
}
|
||||
|
||||
#[allow(unused)]
|
||||
macro_rules! static_assert_sae {
|
||||
($imm:ident) => {
|
||||
let _ = $crate::core_arch::x86::macros::ValidateConstSae::<$imm>::VALID;
|
||||
};
|
||||
}
|
||||
|
||||
macro_rules! constify_imm6 {
|
||||
($imm8:expr, $expand:ident) => {
|
||||
#[allow(overflowing_literals)]
|
||||
|
|
|
|||
|
|
@ -5348,10 +5348,10 @@ mod tests {
|
|||
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(a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(a, b, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
|
||||
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);
|
||||
}
|
||||
|
|
@ -5360,14 +5360,12 @@ mod tests {
|
|||
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(a, 0, a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
a,
|
||||
0b11110000,
|
||||
a,
|
||||
b,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -5377,13 +5375,11 @@ mod tests {
|
|||
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(0, a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
0b11110000,
|
||||
a,
|
||||
b,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -5393,7 +5389,7 @@ mod tests {
|
|||
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(a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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,
|
||||
|
|
@ -5405,7 +5401,7 @@ mod tests {
|
|||
0.,
|
||||
);
|
||||
assert_eq_m512d(r, e);
|
||||
let r = _mm512_mul_round_pd(a, b, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
|
||||
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);
|
||||
}
|
||||
|
|
@ -5414,14 +5410,12 @@ mod tests {
|
|||
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(a, 0, a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
a,
|
||||
0b11110000,
|
||||
a,
|
||||
b,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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.,
|
||||
|
|
@ -5440,13 +5434,11 @@ mod tests {
|
|||
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(0, a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
0b11110000,
|
||||
a,
|
||||
b,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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.,
|
||||
|
|
@ -5465,10 +5457,10 @@ mod tests {
|
|||
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(a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(a, b, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
|
||||
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);
|
||||
}
|
||||
|
|
@ -5477,14 +5469,12 @@ mod tests {
|
|||
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(a, 0, a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
a,
|
||||
0b11110000,
|
||||
a,
|
||||
b,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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.,
|
||||
|
|
@ -5503,13 +5493,11 @@ mod tests {
|
|||
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(0, a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
0b11110000,
|
||||
a,
|
||||
b,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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.,
|
||||
|
|
@ -5527,10 +5515,10 @@ mod tests {
|
|||
#[simd_test(enable = "avx512f")]
|
||||
unsafe fn test_mm512_sqrt_round_pd() {
|
||||
let a = _mm512_set1_pd(3.);
|
||||
let r = _mm512_sqrt_round_pd(a, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(a, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
|
||||
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);
|
||||
}
|
||||
|
|
@ -5538,13 +5526,11 @@ mod tests {
|
|||
#[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(a, 0, a, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
a,
|
||||
0b11110000,
|
||||
a,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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.,
|
||||
|
|
@ -5562,12 +5548,11 @@ mod tests {
|
|||
#[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(0, a, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
0b11110000,
|
||||
a,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
let r = _mm512_maskz_sqrt_round_pd::<{ _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC }>(
|
||||
0b11110000, a,
|
||||
);
|
||||
let e = _mm512_setr_pd(
|
||||
0.,
|
||||
|
|
@ -5587,10 +5572,10 @@ mod tests {
|
|||
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(a, b, c, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(a, b, c, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
|
||||
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);
|
||||
}
|
||||
|
|
@ -5600,15 +5585,12 @@ mod tests {
|
|||
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(a, 0, b, c, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
a,
|
||||
0b00001111,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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.,
|
||||
|
|
@ -5628,15 +5610,12 @@ mod tests {
|
|||
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(0, a, b, c, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
0b00001111,
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -5647,15 +5626,12 @@ mod tests {
|
|||
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(a, b, c, 0, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
0b00001111,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -5666,10 +5642,10 @@ mod tests {
|
|||
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(a, b, c, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(a, b, c, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
|
||||
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);
|
||||
}
|
||||
|
|
@ -5679,15 +5655,12 @@ mod tests {
|
|||
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(a, 0, b, c, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
a,
|
||||
0b00001111,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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.,
|
||||
|
|
@ -5707,15 +5680,12 @@ mod tests {
|
|||
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(0, a, b, c, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
0b00001111,
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -5726,15 +5696,12 @@ mod tests {
|
|||
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(a, b, c, 0, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
0b00001111,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -5745,10 +5712,11 @@ mod tests {
|
|||
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(a, b, c, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(a, b, c, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
|
||||
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,
|
||||
|
|
@ -5767,20 +5735,12 @@ mod tests {
|
|||
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(
|
||||
a,
|
||||
0,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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(
|
||||
a,
|
||||
0b00001111,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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.,
|
||||
|
|
@ -5800,20 +5760,12 @@ mod tests {
|
|||
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(
|
||||
0,
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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(
|
||||
0b00001111,
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -5824,20 +5776,12 @@ mod tests {
|
|||
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(
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
0,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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(
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
0b00001111,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -5848,10 +5792,11 @@ mod tests {
|
|||
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(a, b, c, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(a, b, c, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
|
||||
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.,
|
||||
|
|
@ -5870,20 +5815,12 @@ mod tests {
|
|||
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(
|
||||
a,
|
||||
0,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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(
|
||||
a,
|
||||
0b00001111,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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.,
|
||||
|
|
@ -5903,20 +5840,12 @@ mod tests {
|
|||
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(
|
||||
0,
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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(
|
||||
0b00001111,
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -5927,20 +5856,12 @@ mod tests {
|
|||
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(
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
0,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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(
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
0b00001111,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -5951,10 +5872,11 @@ mod tests {
|
|||
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(a, b, c, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(a, b, c, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
|
||||
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);
|
||||
}
|
||||
|
|
@ -5964,15 +5886,12 @@ mod tests {
|
|||
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(a, 0, b, c, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
a,
|
||||
0b00001111,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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.,
|
||||
|
|
@ -5992,15 +5911,12 @@ mod tests {
|
|||
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(0, a, b, c, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
0b00001111,
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -6011,15 +5927,12 @@ mod tests {
|
|||
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(a, b, c, 0, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
0b00001111,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -6030,10 +5943,11 @@ mod tests {
|
|||
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(a, b, c, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(a, b, c, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
|
||||
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);
|
||||
}
|
||||
|
|
@ -6043,15 +5957,12 @@ mod tests {
|
|||
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(a, 0, b, c, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
a,
|
||||
0b00001111,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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.,
|
||||
|
|
@ -6071,15 +5982,12 @@ mod tests {
|
|||
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(0, a, b, c, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
0b00001111,
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -6090,15 +5998,12 @@ mod tests {
|
|||
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(a, b, c, 0, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
a,
|
||||
b,
|
||||
c,
|
||||
0b00001111,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -6108,7 +6013,7 @@ mod tests {
|
|||
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(a, b, _MM_FROUND_CUR_DIRECTION);
|
||||
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);
|
||||
}
|
||||
|
|
@ -6117,9 +6022,9 @@ mod tests {
|
|||
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(a, 0, a, b, _MM_FROUND_CUR_DIRECTION);
|
||||
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(a, 0b00001111, a, b, _MM_FROUND_CUR_DIRECTION);
|
||||
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);
|
||||
}
|
||||
|
|
@ -6128,9 +6033,9 @@ mod tests {
|
|||
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(0, a, b, _MM_FROUND_CUR_DIRECTION);
|
||||
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(0b00001111, a, b, _MM_FROUND_CUR_DIRECTION);
|
||||
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);
|
||||
}
|
||||
|
|
@ -6139,7 +6044,7 @@ mod tests {
|
|||
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(a, b, _MM_FROUND_CUR_DIRECTION);
|
||||
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);
|
||||
}
|
||||
|
|
@ -6148,9 +6053,9 @@ mod tests {
|
|||
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(a, 0, a, b, _MM_FROUND_CUR_DIRECTION);
|
||||
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(a, 0b00001111, a, b, _MM_FROUND_CUR_DIRECTION);
|
||||
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);
|
||||
}
|
||||
|
|
@ -6159,9 +6064,9 @@ mod tests {
|
|||
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(0, a, b, _MM_FROUND_CUR_DIRECTION);
|
||||
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(0b00001111, a, b, _MM_FROUND_CUR_DIRECTION);
|
||||
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);
|
||||
}
|
||||
|
|
@ -6169,7 +6074,7 @@ mod tests {
|
|||
#[simd_test(enable = "avx512f")]
|
||||
unsafe fn test_mm512_getexp_round_pd() {
|
||||
let a = _mm512_set1_pd(3.);
|
||||
let r = _mm512_getexp_round_pd(a, _MM_FROUND_CUR_DIRECTION);
|
||||
let r = _mm512_getexp_round_pd::<_MM_FROUND_CUR_DIRECTION>(a);
|
||||
let e = _mm512_set1_pd(1.);
|
||||
assert_eq_m512d(r, e);
|
||||
}
|
||||
|
|
@ -6177,9 +6082,9 @@ mod tests {
|
|||
#[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(a, 0, a, _MM_FROUND_CUR_DIRECTION);
|
||||
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(a, 0b11110000, a, _MM_FROUND_CUR_DIRECTION);
|
||||
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);
|
||||
}
|
||||
|
|
@ -6187,9 +6092,9 @@ mod tests {
|
|||
#[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(0, a, _MM_FROUND_CUR_DIRECTION);
|
||||
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(0b11110000, a, _MM_FROUND_CUR_DIRECTION);
|
||||
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);
|
||||
}
|
||||
|
|
@ -6227,7 +6132,7 @@ mod tests {
|
|||
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(a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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);
|
||||
}
|
||||
|
|
@ -6236,15 +6141,12 @@ mod tests {
|
|||
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(a, 0, a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
a,
|
||||
0b11110000,
|
||||
a,
|
||||
b,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
@ -6254,14 +6156,12 @@ mod tests {
|
|||
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(0, a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
|
||||
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(
|
||||
0b11110000,
|
||||
a,
|
||||
b,
|
||||
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
|
||||
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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue