Reformat avx512 (#894)

This commit is contained in:
Jeff Muizelaar 2020-09-07 15:45:20 -04:00 committed by GitHub
parent 63af5f371c
commit 6f97356f7f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 904 additions and 469 deletions

File diff suppressed because it is too large Load diff

View file

@ -638,469 +638,277 @@ mod tests {
#[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 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.
);
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 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.
);
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 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.
);
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 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.
);
let e = _mm512_setr_pd(1., 2., 3., 4., 2., 2., 2., 2.);
assert_eq_m512d(r, e);
}
#[simd_test(enable = "avx512f")]
unsafe fn test_mm512_fmsub_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 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_fmsub_pd(a, b, c);
let e = _mm512_setr_pd(
-1., 0., 1., 2., 3., 4., 5., 6.
);
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_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 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_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.
);
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_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 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_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.
);
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_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 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_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.
);
let e = _mm512_setr_pd(-1., 0., 1., 2., 2., 2., 2., 2.);
assert_eq_m512d(r, e);
}
#[simd_test(enable = "avx512f")]
unsafe fn test_mm512_fmaddsub_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 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_fmaddsub_pd(a, b, c);
let e = _mm512_setr_pd(
-1., 2., 1., 4., 3., 6., 5., 8.
);
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_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 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_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.
);
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_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 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_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.
);
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_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 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_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.
);
let e = _mm512_setr_pd(-1., 2., 1., 4., 2., 2., 2., 2.);
assert_eq_m512d(r, e);
}
#[simd_test(enable = "avx512f")]
unsafe fn test_mm512_fmsubadd_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 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_fmsubadd_pd(a, b, c);
let e = _mm512_setr_pd(
1., 0., 3., 2., 5., 4., 7., 6.
);
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_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 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_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.
);
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_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 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_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.
);
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_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 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_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.
);
let e = _mm512_setr_pd(1., 0., 3., 2., 2., 2., 2., 2.);
assert_eq_m512d(r, e);
}
#[simd_test(enable = "avx512f")]
unsafe fn test_mm512_fnmadd_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 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_fnmadd_pd(a, b, c);
let e = _mm512_setr_pd(
1., 0., -1., -2., -3., -4., -5., -6.
);
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_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 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_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.
);
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_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 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_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.
);
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_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 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_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.
);
let e = _mm512_setr_pd(1., 0., -1., -2., 2., 2., 2., 2.);
assert_eq_m512d(r, e);
}
#[simd_test(enable = "avx512f")]
unsafe fn test_mm512_fnmsub_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 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_fnmsub_pd(a, b, c);
let e = _mm512_setr_pd(
-1., -2., -3., -4., -5., -6., -7., -8.
);
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_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 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_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.
);
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_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 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_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.
);
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_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 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_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.
);
let e = _mm512_setr_pd(-1., -2., -3., -4., 2., 2., 2., 2.);
assert_eq_m512d(r, e);
}
@ -1122,7 +930,13 @@ mod tests {
let b = _mm512_set1_pd(-1.);
let r = _mm512_mask_add_round_pd(a, 0, a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
assert_eq_m512d(r, a);
let r = _mm512_mask_add_round_pd(a, 0b11110000, a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
let r = _mm512_mask_add_round_pd(
a,
0b11110000,
a,
b,
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
);
let e = _mm512_setr_pd(8., 9.5, 10., 11.5, 11., 12.5, 13., -1.0);
assert_eq_m512d(r, e);
}
@ -1133,7 +947,12 @@ mod tests {
let b = _mm512_set1_pd(-1.);
let r = _mm512_maskz_add_round_pd(0, a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
assert_eq_m512d(r, _mm512_setzero_pd());
let r = _mm512_maskz_add_round_pd(0b11110000, a, b, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
let r = _mm512_maskz_add_round_pd(
0b11110000,
a,
b,
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
);
let e = _mm512_setr_pd(0., 0., 0., 0., 11., 12.5, 13., -1.0);
assert_eq_m512d(r, e);
}
@ -1156,7 +975,13 @@ mod tests {
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);
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(
a,
0b11110000,
a,
b,
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
);
let e = _mm512_setr_pd(8., 9.5, 10., 11.5, 11., 12.5, 13., -1.0);
assert_eq_m512d(r, e);
}
@ -1167,7 +992,12 @@ mod tests {
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);
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(
0b11110000,
a,
b,
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
);
let e = _mm512_setr_pd(0., 0., 0., 0., 11., 12.5, 13., -1.0);
assert_eq_m512d(r, e);
}
@ -1177,7 +1007,16 @@ mod tests {
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 e = _mm512_setr_pd(0.8, 0.9500000000000001, 1., 1.1500000000000001, 1.2000000000000002, 1.35, 1.4000000000000001, 0.);
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(a, b, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
let e = _mm512_setr_pd(0.8, 0.95, 1.0, 1.15, 1.2, 1.3499999999999999, 1.4, 0.0);
@ -1190,8 +1029,23 @@ mod tests {
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);
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 e = _mm512_setr_pd(8., 9.5, 10., 11.5, 1.2000000000000002, 1.35, 1.4000000000000001, 0.);
let r = _mm512_mask_mul_round_pd(
a,
0b11110000,
a,
b,
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
);
let e = _mm512_setr_pd(
8.,
9.5,
10.,
11.5,
1.2000000000000002,
1.35,
1.4000000000000001,
0.,
);
assert_eq_m512d(r, e);
}
@ -1201,8 +1055,22 @@ mod tests {
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);
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 e = _mm512_setr_pd(0., 0., 0., 0., 1.2000000000000002, 1.35, 1.4000000000000001, 0.);
let r = _mm512_maskz_mul_round_pd(
0b11110000,
a,
b,
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
);
let e = _mm512_setr_pd(
0.,
0.,
0.,
0.,
1.2000000000000002,
1.35,
1.4000000000000001,
0.,
);
assert_eq_m512d(r, e);
}
@ -1224,8 +1092,23 @@ mod tests {
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);
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 e = _mm512_setr_pd(1., 1., 1., 1., 0.3333333333333333, 0.3333333333333333, 0.3333333333333333, 0.3333333333333333);
let r = _mm512_mask_div_round_pd(
a,
0b11110000,
a,
b,
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
);
let e = _mm512_setr_pd(
1.,
1.,
1.,
1.,
0.3333333333333333,
0.3333333333333333,
0.3333333333333333,
0.3333333333333333,
);
assert_eq_m512d(r, e);
}
@ -1235,8 +1118,22 @@ mod tests {
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);
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 e = _mm512_setr_pd(0., 0., 0., 0., 0.3333333333333333, 0.3333333333333333, 0.3333333333333333, 0.3333333333333333);
let r = _mm512_maskz_div_round_pd(
0b11110000,
a,
b,
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
);
let e = _mm512_setr_pd(
0.,
0.,
0.,
0.,
0.3333333333333333,
0.3333333333333333,
0.3333333333333333,
0.3333333333333333,
);
assert_eq_m512d(r, e);
}
@ -1256,8 +1153,22 @@ mod tests {
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);
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 e = _mm512_setr_pd(3., 3., 3., 3., 1.7320508075688772, 1.7320508075688772, 1.7320508075688772, 1.7320508075688772);
let r = _mm512_mask_sqrt_round_pd(
a,
0b11110000,
a,
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
);
let e = _mm512_setr_pd(
3.,
3.,
3.,
3.,
1.7320508075688772,
1.7320508075688772,
1.7320508075688772,
1.7320508075688772,
);
assert_eq_m512d(r, e);
}
@ -1266,8 +1177,21 @@ mod tests {
let a = _mm512_set1_pd(3.);
let r = _mm512_maskz_sqrt_round_pd(0, a, _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC);
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 e = _mm512_setr_pd(0., 0., 0., 0., 1.7320508075688772, 1.7320508075688772, 1.7320508075688772, 1.7320508075688772);
let r = _mm512_maskz_sqrt_round_pd(
0b11110000,
a,
_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC,
);
let e = _mm512_setr_pd(
0.,
0.,
0.,
0.,
1.7320508075688772,
1.7320508075688772,
1.7320508075688772,
1.7320508075688772,
);
assert_eq_m512d(r, e);
}