@@ -1689,30 +1689,58 @@ mod tests {
1689
1689
assert_eq_m128 ( r, e) ;
1690
1690
}
1691
1691
1692
- #[ allow( deprecated) ] // FIXME: This test uses deprecated CSR access functions
1693
1692
#[ simd_test( enable = "sse4.1" ) ]
1694
1693
unsafe fn test_mm_round_sd ( ) {
1695
1694
let a = _mm_setr_pd ( 1.5 , 3.5 ) ;
1696
1695
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) ;
1701
1715
let e = _mm_setr_pd ( -2.0 , 3.5 ) ;
1702
1716
assert_eq_m128d ( r, e) ;
1703
1717
}
1704
1718
1705
- #[ allow( deprecated) ] // FIXME: This test uses deprecated CSR access functions
1706
1719
#[ simd_test( enable = "sse4.1" ) ]
1707
1720
unsafe fn test_mm_round_ss ( ) {
1708
1721
let a = _mm_setr_ps ( 1.5 , 3.5 , 7.5 , 15.5 ) ;
1709
1722
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) ;
1714
1724
let e = _mm_setr_ps ( -2.0 , 3.5 , 7.5 , 15.5 ) ;
1715
1725
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) ;
1716
1744
}
1717
1745
1718
1746
#[ simd_test( enable = "sse4.1" ) ]
0 commit comments