Skip to content

Commit 6f9e038

Browse files
eduardosmAmanieu
authored andcommitted
Improve _mm_round_ss/_mm_round_sd tests
* Do not use deprecated CSR access functions * Test different rounding modes
1 parent 2976cd6 commit 6f9e038

File tree

1 file changed

+38
-10
lines changed

1 file changed

+38
-10
lines changed

crates/core_arch/src/x86/sse41.rs

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1689,30 +1689,58 @@ mod tests {
16891689
assert_eq_m128(r, e);
16901690
}
16911691

1692-
#[allow(deprecated)] // FIXME: This test uses deprecated CSR access functions
16931692
#[simd_test(enable = "sse4.1")]
16941693
unsafe fn test_mm_round_sd() {
16951694
let a = _mm_setr_pd(1.5, 3.5);
16961695
let b = _mm_setr_pd(-2.5, -4.5);
1697-
let old_mode = _MM_GET_ROUNDING_MODE();
1698-
_MM_SET_ROUNDING_MODE(_MM_ROUND_TOWARD_ZERO);
1699-
let r = _mm_round_sd::<_MM_FROUND_CUR_DIRECTION>(a, b);
1700-
_MM_SET_ROUNDING_MODE(old_mode);
1696+
let r = _mm_round_sd::<_MM_FROUND_TO_NEAREST_INT>(a, b);
1697+
let e = _mm_setr_pd(-2.0, 3.5);
1698+
assert_eq_m128d(r, e);
1699+
1700+
let a = _mm_setr_pd(1.5, 3.5);
1701+
let b = _mm_setr_pd(-2.5, -4.5);
1702+
let r = _mm_round_sd::<_MM_FROUND_TO_NEG_INF>(a, b);
1703+
let e = _mm_setr_pd(-3.0, 3.5);
1704+
assert_eq_m128d(r, e);
1705+
1706+
let a = _mm_setr_pd(1.5, 3.5);
1707+
let b = _mm_setr_pd(-2.5, -4.5);
1708+
let r = _mm_round_sd::<_MM_FROUND_TO_POS_INF>(a, b);
1709+
let e = _mm_setr_pd(-2.0, 3.5);
1710+
assert_eq_m128d(r, e);
1711+
1712+
let a = _mm_setr_pd(1.5, 3.5);
1713+
let b = _mm_setr_pd(-2.5, -4.5);
1714+
let r = _mm_round_sd::<_MM_FROUND_TO_ZERO>(a, b);
17011715
let e = _mm_setr_pd(-2.0, 3.5);
17021716
assert_eq_m128d(r, e);
17031717
}
17041718

1705-
#[allow(deprecated)] // FIXME: This test uses deprecated CSR access functions
17061719
#[simd_test(enable = "sse4.1")]
17071720
unsafe fn test_mm_round_ss() {
17081721
let a = _mm_setr_ps(1.5, 3.5, 7.5, 15.5);
17091722
let b = _mm_setr_ps(-1.75, -4.5, -8.5, -16.5);
1710-
let old_mode = _MM_GET_ROUNDING_MODE();
1711-
_MM_SET_ROUNDING_MODE(_MM_ROUND_NEAREST);
1712-
let r = _mm_round_ss::<_MM_FROUND_CUR_DIRECTION>(a, b);
1713-
_MM_SET_ROUNDING_MODE(old_mode);
1723+
let r = _mm_round_ss::<_MM_FROUND_TO_NEAREST_INT>(a, b);
17141724
let e = _mm_setr_ps(-2.0, 3.5, 7.5, 15.5);
17151725
assert_eq_m128(r, e);
1726+
1727+
let a = _mm_setr_ps(1.5, 3.5, 7.5, 15.5);
1728+
let b = _mm_setr_ps(-1.75, -4.5, -8.5, -16.5);
1729+
let r = _mm_round_ss::<_MM_FROUND_TO_NEG_INF>(a, b);
1730+
let e = _mm_setr_ps(-2.0, 3.5, 7.5, 15.5);
1731+
assert_eq_m128(r, e);
1732+
1733+
let a = _mm_setr_ps(1.5, 3.5, 7.5, 15.5);
1734+
let b = _mm_setr_ps(-1.75, -4.5, -8.5, -16.5);
1735+
let r = _mm_round_ss::<_MM_FROUND_TO_POS_INF>(a, b);
1736+
let e = _mm_setr_ps(-1.0, 3.5, 7.5, 15.5);
1737+
assert_eq_m128(r, e);
1738+
1739+
let a = _mm_setr_ps(1.5, 3.5, 7.5, 15.5);
1740+
let b = _mm_setr_ps(-1.75, -4.5, -8.5, -16.5);
1741+
let r = _mm_round_ss::<_MM_FROUND_TO_ZERO>(a, b);
1742+
let e = _mm_setr_ps(-1.0, 3.5, 7.5, 15.5);
1743+
assert_eq_m128(r, e);
17161744
}
17171745

17181746
#[simd_test(enable = "sse4.1")]

0 commit comments

Comments
 (0)