@@ -119,6 +119,31 @@ unsafe fn test_sse41() {
119
119
let r = _mm_round_sd :: < _MM_FROUND_TO_NEAREST_INT > ( a, b) ;
120
120
let e = _mm_setr_pd ( -2.0 , 3.5 ) ;
121
121
assert_eq_m128d ( r, e) ;
122
+
123
+ let a = _mm_setr_pd ( 1.5 , 3.5 ) ;
124
+ let b = _mm_setr_pd ( -2.5 , -4.5 ) ;
125
+ let r = _mm_round_sd :: < _MM_FROUND_TO_NEG_INF > ( a, b) ;
126
+ let e = _mm_setr_pd ( -3.0 , 3.5 ) ;
127
+ assert_eq_m128d ( r, e) ;
128
+
129
+ let a = _mm_setr_pd ( 1.5 , 3.5 ) ;
130
+ let b = _mm_setr_pd ( -2.5 , -4.5 ) ;
131
+ let r = _mm_round_sd :: < _MM_FROUND_TO_POS_INF > ( a, b) ;
132
+ let e = _mm_setr_pd ( -2.0 , 3.5 ) ;
133
+ assert_eq_m128d ( r, e) ;
134
+
135
+ let a = _mm_setr_pd ( 1.5 , 3.5 ) ;
136
+ let b = _mm_setr_pd ( -2.5 , -4.5 ) ;
137
+ let r = _mm_round_sd :: < _MM_FROUND_TO_ZERO > ( a, b) ;
138
+ let e = _mm_setr_pd ( -2.0 , 3.5 ) ;
139
+ assert_eq_m128d ( r, e) ;
140
+
141
+ // Assume round-to-nearest by default
142
+ let a = _mm_setr_pd ( 1.5 , 3.5 ) ;
143
+ let b = _mm_setr_pd ( -2.5 , -4.5 ) ;
144
+ let r = _mm_round_sd :: < _MM_FROUND_CUR_DIRECTION > ( a, b) ;
145
+ let e = _mm_setr_pd ( -2.0 , 3.5 ) ;
146
+ assert_eq_m128d ( r, e) ;
122
147
}
123
148
test_mm_round_sd ( ) ;
124
149
@@ -129,6 +154,31 @@ unsafe fn test_sse41() {
129
154
let r = _mm_round_ss :: < _MM_FROUND_TO_NEAREST_INT > ( a, b) ;
130
155
let e = _mm_setr_ps ( -2.0 , 3.5 , 7.5 , 15.5 ) ;
131
156
assert_eq_m128 ( r, e) ;
157
+
158
+ let a = _mm_setr_ps ( 1.5 , 3.5 , 7.5 , 15.5 ) ;
159
+ let b = _mm_setr_ps ( -1.75 , -4.5 , -8.5 , -16.5 ) ;
160
+ let r = _mm_round_ss :: < _MM_FROUND_TO_NEG_INF > ( a, b) ;
161
+ let e = _mm_setr_ps ( -2.0 , 3.5 , 7.5 , 15.5 ) ;
162
+ assert_eq_m128 ( r, e) ;
163
+
164
+ let a = _mm_setr_ps ( 1.5 , 3.5 , 7.5 , 15.5 ) ;
165
+ let b = _mm_setr_ps ( -1.75 , -4.5 , -8.5 , -16.5 ) ;
166
+ let r = _mm_round_ss :: < _MM_FROUND_TO_POS_INF > ( a, b) ;
167
+ let e = _mm_setr_ps ( -1.0 , 3.5 , 7.5 , 15.5 ) ;
168
+ assert_eq_m128 ( r, e) ;
169
+
170
+ let a = _mm_setr_ps ( 1.5 , 3.5 , 7.5 , 15.5 ) ;
171
+ let b = _mm_setr_ps ( -1.75 , -4.5 , -8.5 , -16.5 ) ;
172
+ let r = _mm_round_ss :: < _MM_FROUND_TO_ZERO > ( a, b) ;
173
+ let e = _mm_setr_ps ( -1.0 , 3.5 , 7.5 , 15.5 ) ;
174
+ assert_eq_m128 ( r, e) ;
175
+
176
+ // Assume round-to-nearest by default
177
+ let a = _mm_setr_ps ( 1.5 , 3.5 , 7.5 , 15.5 ) ;
178
+ let b = _mm_setr_ps ( -1.75 , -4.5 , -8.5 , -16.5 ) ;
179
+ let r = _mm_round_ss :: < _MM_FROUND_CUR_DIRECTION > ( a, b) ;
180
+ let e = _mm_setr_ps ( -2.0 , 3.5 , 7.5 , 15.5 ) ;
181
+ assert_eq_m128 ( r, e) ;
132
182
}
133
183
test_mm_round_ss ( ) ;
134
184
0 commit comments