@@ -78,17 +78,11 @@ pub unsafe fn _mm_blendv_epi8(a: __m128i, b: __m128i, mask: __m128i) -> __m128i
78
78
// see https://bugs.llvm.org/show_bug.cgi?id=38195
79
79
// #[cfg_attr(test, assert_instr(pblendw, imm8 = 0xF0))]
80
80
#[ cfg_attr( test, assert_instr( blendps, imm8 = 0xF0 ) ) ]
81
- #[ rustc_args_required_const ( 2 ) ]
81
+ #[ rustc_legacy_const_generics ( 2 ) ]
82
82
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
83
- pub unsafe fn _mm_blend_epi16 ( a : __m128i , b : __m128i , imm8 : i32 ) -> __m128i {
84
- let a = a. as_i16x8 ( ) ;
85
- let b = b. as_i16x8 ( ) ;
86
- macro_rules! call {
87
- ( $imm8: expr) => {
88
- pblendw( a, b, $imm8)
89
- } ;
90
- }
91
- transmute ( constify_imm8 ! ( imm8, call) )
83
+ pub unsafe fn _mm_blend_epi16 < const imm8: i32 > ( a : __m128i , b : __m128i ) -> __m128i {
84
+ static_assert_imm8 ! ( imm8) ;
85
+ transmute ( pblendw ( a. as_i16x8 ( ) , b. as_i16x8 ( ) , imm8 as u8 ) )
92
86
}
93
87
94
88
/// Blend packed double-precision (64-bit) floating-point elements from `a`
@@ -125,15 +119,11 @@ pub unsafe fn _mm_blendv_ps(a: __m128, b: __m128, mask: __m128) -> __m128 {
125
119
// see https://bugs.llvm.org/show_bug.cgi?id=38195
126
120
// #[cfg_attr(test, assert_instr(blendpd, imm2 = 0b10))]
127
121
#[ cfg_attr( test, assert_instr( blendps, imm2 = 0b10 ) ) ]
128
- #[ rustc_args_required_const ( 2 ) ]
122
+ #[ rustc_legacy_const_generics ( 2 ) ]
129
123
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
130
- pub unsafe fn _mm_blend_pd ( a : __m128d , b : __m128d , imm2 : i32 ) -> __m128d {
131
- macro_rules! call {
132
- ( $imm2: expr) => {
133
- blendpd( a, b, $imm2)
134
- } ;
135
- }
136
- constify_imm2 ! ( imm2, call)
124
+ pub unsafe fn _mm_blend_pd < const imm2: i32 > ( a : __m128d , b : __m128d ) -> __m128d {
125
+ static_assert_imm2 ! ( imm2) ;
126
+ blendpd ( a, b, imm2 as u8 )
137
127
}
138
128
139
129
/// Blend packed single-precision (32-bit) floating-point elements from `a`
@@ -143,15 +133,11 @@ pub unsafe fn _mm_blend_pd(a: __m128d, b: __m128d, imm2: i32) -> __m128d {
143
133
#[ inline]
144
134
#[ target_feature( enable = "sse4.1" ) ]
145
135
#[ cfg_attr( test, assert_instr( blendps, imm4 = 0b0101 ) ) ]
146
- #[ rustc_args_required_const ( 2 ) ]
136
+ #[ rustc_legacy_const_generics ( 2 ) ]
147
137
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
148
- pub unsafe fn _mm_blend_ps ( a : __m128 , b : __m128 , imm4 : i32 ) -> __m128 {
149
- macro_rules! call {
150
- ( $imm4: expr) => {
151
- blendps( a, b, $imm4)
152
- } ;
153
- }
154
- constify_imm4 ! ( imm4, call)
138
+ pub unsafe fn _mm_blend_ps < const imm4: i32 > ( a : __m128 , b : __m128 ) -> __m128 {
139
+ static_assert_imm4 ! ( imm4) ;
140
+ blendps ( a, b, imm4 as u8 )
155
141
}
156
142
157
143
/// Extracts a single-precision (32-bit) floating-point element from `a`,
@@ -164,15 +150,11 @@ pub unsafe fn _mm_blend_ps(a: __m128, b: __m128, imm4: i32) -> __m128 {
164
150
all( test, not( target_os = "windows" ) ) ,
165
151
assert_instr( extractps, imm8 = 0 )
166
152
) ]
167
- #[ rustc_args_required_const ( 1 ) ]
153
+ #[ rustc_legacy_const_generics ( 1 ) ]
168
154
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
169
- pub unsafe fn _mm_extract_ps ( a : __m128 , imm8 : i32 ) -> i32 {
170
- macro_rules! call {
171
- ( $imm2: expr) => {
172
- transmute( simd_extract:: <_, f32 >( a, $imm2) )
173
- } ;
174
- }
175
- constify_imm2 ! ( imm8, call)
155
+ pub unsafe fn _mm_extract_ps < const imm8: i32 > ( a : __m128 ) -> i32 {
156
+ static_assert_imm2 ! ( imm8) ;
157
+ transmute ( simd_extract :: < _ , f32 > ( a, imm8 as u32 ) )
176
158
}
177
159
178
160
/// Extracts an 8-bit integer from `a`, selected with `imm8`. Returns a 32-bit
@@ -184,16 +166,11 @@ pub unsafe fn _mm_extract_ps(a: __m128, imm8: i32) -> i32 {
184
166
#[ inline]
185
167
#[ target_feature( enable = "sse4.1" ) ]
186
168
#[ cfg_attr( test, assert_instr( pextrb, imm8 = 0 ) ) ]
187
- #[ rustc_args_required_const ( 1 ) ]
169
+ #[ rustc_legacy_const_generics ( 1 ) ]
188
170
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
189
- pub unsafe fn _mm_extract_epi8 ( a : __m128i , imm8 : i32 ) -> i32 {
190
- let a = a. as_u8x16 ( ) ;
191
- macro_rules! call {
192
- ( $imm4: expr) => {
193
- simd_extract:: <_, u8 >( a, $imm4) as i32
194
- } ;
195
- }
196
- constify_imm4 ! ( imm8, call)
171
+ pub unsafe fn _mm_extract_epi8 < const imm8: i32 > ( a : __m128i ) -> i32 {
172
+ static_assert_imm4 ! ( imm8) ;
173
+ simd_extract :: < _ , u8 > ( a. as_u8x16 ( ) , imm8 as u32 ) as i32
197
174
}
198
175
199
176
/// Extracts an 32-bit integer from `a` selected with `imm8`
@@ -205,16 +182,11 @@ pub unsafe fn _mm_extract_epi8(a: __m128i, imm8: i32) -> i32 {
205
182
all( test, not( target_os = "windows" ) ) ,
206
183
assert_instr( extractps, imm8 = 1 )
207
184
) ]
208
- #[ rustc_args_required_const ( 1 ) ]
185
+ #[ rustc_legacy_const_generics ( 1 ) ]
209
186
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
210
- pub unsafe fn _mm_extract_epi32 ( a : __m128i , imm8 : i32 ) -> i32 {
211
- let a = a. as_i32x4 ( ) ;
212
- macro_rules! call {
213
- ( $imm2: expr) => {
214
- simd_extract:: <_, i32 >( a, $imm2)
215
- } ;
216
- }
217
- constify_imm2 ! ( imm8, call)
187
+ pub unsafe fn _mm_extract_epi32 < const imm8: i32 > ( a : __m128i ) -> i32 {
188
+ static_assert_imm2 ! ( imm8) ;
189
+ simd_extract :: < _ , i32 > ( a. as_i32x4 ( ) , imm8 as u32 )
218
190
}
219
191
220
192
/// Select a single value in `a` to store at some position in `b`,
@@ -244,15 +216,11 @@ pub unsafe fn _mm_extract_epi32(a: __m128i, imm8: i32) -> i32 {
244
216
#[ inline]
245
217
#[ target_feature( enable = "sse4.1" ) ]
246
218
#[ cfg_attr( test, assert_instr( insertps, imm8 = 0b1010 ) ) ]
247
- #[ rustc_args_required_const ( 2 ) ]
219
+ #[ rustc_legacy_const_generics ( 2 ) ]
248
220
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
249
- pub unsafe fn _mm_insert_ps ( a : __m128 , b : __m128 , imm8 : i32 ) -> __m128 {
250
- macro_rules! call {
251
- ( $imm8: expr) => {
252
- insertps( a, b, $imm8)
253
- } ;
254
- }
255
- constify_imm8 ! ( imm8, call)
221
+ pub unsafe fn _mm_insert_ps < const imm8: i32 > ( a : __m128 , b : __m128 ) -> __m128 {
222
+ static_assert_imm8 ! ( imm8) ;
223
+ insertps ( a, b, imm8 as u8 )
256
224
}
257
225
258
226
/// Returns a copy of `a` with the 8-bit integer from `i` inserted at a
@@ -262,16 +230,11 @@ pub unsafe fn _mm_insert_ps(a: __m128, b: __m128, imm8: i32) -> __m128 {
262
230
#[ inline]
263
231
#[ target_feature( enable = "sse4.1" ) ]
264
232
#[ cfg_attr( test, assert_instr( pinsrb, imm8 = 0 ) ) ]
265
- #[ rustc_args_required_const ( 2 ) ]
233
+ #[ rustc_legacy_const_generics ( 2 ) ]
266
234
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
267
- pub unsafe fn _mm_insert_epi8 ( a : __m128i , i : i32 , imm8 : i32 ) -> __m128i {
268
- let a = a. as_i8x16 ( ) ;
269
- macro_rules! call {
270
- ( $imm4: expr) => {
271
- transmute( simd_insert( a, $imm4, i as i8 ) )
272
- } ;
273
- }
274
- constify_imm4 ! ( imm8, call)
235
+ pub unsafe fn _mm_insert_epi8 < const imm8: i32 > ( a : __m128i , i : i32 ) -> __m128i {
236
+ static_assert_imm4 ! ( imm8) ;
237
+ transmute ( simd_insert ( a. as_i8x16 ( ) , imm8 as u32 , i as i8 ) )
275
238
}
276
239
277
240
/// Returns a copy of `a` with the 32-bit integer from `i` inserted at a
@@ -281,16 +244,11 @@ pub unsafe fn _mm_insert_epi8(a: __m128i, i: i32, imm8: i32) -> __m128i {
281
244
#[ inline]
282
245
#[ target_feature( enable = "sse4.1" ) ]
283
246
#[ cfg_attr( test, assert_instr( pinsrd, imm8 = 0 ) ) ]
284
- #[ rustc_args_required_const ( 2 ) ]
247
+ #[ rustc_legacy_const_generics ( 2 ) ]
285
248
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
286
- pub unsafe fn _mm_insert_epi32 ( a : __m128i , i : i32 , imm8 : i32 ) -> __m128i {
287
- let a = a. as_i32x4 ( ) ;
288
- macro_rules! call {
289
- ( $imm2: expr) => {
290
- transmute( simd_insert( a, $imm2, i) )
291
- } ;
292
- }
293
- constify_imm2 ! ( imm8, call)
249
+ pub unsafe fn _mm_insert_epi32 < const imm8: i32 > ( a : __m128i , i : i32 ) -> __m128i {
250
+ static_assert_imm2 ! ( imm8) ;
251
+ transmute ( simd_insert ( a. as_i32x4 ( ) , imm8 as u32 , i) )
294
252
}
295
253
296
254
/// Compares packed 8-bit integers in `a` and `b` and returns packed maximum
@@ -584,15 +542,11 @@ pub unsafe fn _mm_cvtepu32_epi64(a: __m128i) -> __m128i {
584
542
#[ inline]
585
543
#[ target_feature( enable = "sse4.1" ) ]
586
544
#[ cfg_attr( test, assert_instr( dppd, imm8 = 0 ) ) ]
587
- #[ rustc_args_required_const ( 2 ) ]
545
+ #[ rustc_legacy_const_generics ( 2 ) ]
588
546
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
589
- pub unsafe fn _mm_dp_pd ( a : __m128d , b : __m128d , imm8 : i32 ) -> __m128d {
590
- macro_rules! call {
591
- ( $imm8: expr) => {
592
- dppd( a, b, $imm8)
593
- } ;
594
- }
595
- constify_imm8 ! ( imm8, call)
547
+ pub unsafe fn _mm_dp_pd < const imm8: i32 > ( a : __m128d , b : __m128d ) -> __m128d {
548
+ static_assert_imm8 ! ( imm8) ;
549
+ dppd ( a, b, imm8 as u8 )
596
550
}
597
551
598
552
/// Returns the dot product of two __m128 vectors.
@@ -607,15 +561,11 @@ pub unsafe fn _mm_dp_pd(a: __m128d, b: __m128d, imm8: i32) -> __m128d {
607
561
#[ inline]
608
562
#[ target_feature( enable = "sse4.1" ) ]
609
563
#[ cfg_attr( test, assert_instr( dpps, imm8 = 0 ) ) ]
610
- #[ rustc_args_required_const ( 2 ) ]
564
+ #[ rustc_legacy_const_generics ( 2 ) ]
611
565
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
612
- pub unsafe fn _mm_dp_ps ( a : __m128 , b : __m128 , imm8 : i32 ) -> __m128 {
613
- macro_rules! call {
614
- ( $imm8: expr) => {
615
- dpps( a, b, $imm8)
616
- } ;
617
- }
618
- constify_imm8 ! ( imm8, call)
566
+ pub unsafe fn _mm_dp_ps < const imm8: i32 > ( a : __m128 , b : __m128 ) -> __m128 {
567
+ static_assert_imm8 ! ( imm8) ;
568
+ dpps ( a, b, imm8 as u8 )
619
569
}
620
570
621
571
/// Round the packed double-precision (64-bit) floating-point elements in `a`
@@ -764,15 +714,11 @@ pub unsafe fn _mm_ceil_ss(a: __m128, b: __m128) -> __m128 {
764
714
#[ inline]
765
715
#[ target_feature( enable = "sse4.1" ) ]
766
716
#[ cfg_attr( test, assert_instr( roundpd, rounding = 0 ) ) ]
767
- #[ rustc_args_required_const ( 1 ) ]
717
+ #[ rustc_legacy_const_generics ( 1 ) ]
768
718
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
769
- pub unsafe fn _mm_round_pd ( a : __m128d , rounding : i32 ) -> __m128d {
770
- macro_rules! call {
771
- ( $imm4: expr) => {
772
- roundpd( a, $imm4)
773
- } ;
774
- }
775
- constify_imm4 ! ( rounding, call)
719
+ pub unsafe fn _mm_round_pd < const rounding: i32 > ( a : __m128d ) -> __m128d {
720
+ static_assert_imm4 ! ( rounding) ;
721
+ roundpd ( a, rounding)
776
722
}
777
723
778
724
/// Round the packed single-precision (32-bit) floating-point elements in `a`
@@ -809,15 +755,11 @@ pub unsafe fn _mm_round_pd(a: __m128d, rounding: i32) -> __m128d {
809
755
#[ inline]
810
756
#[ target_feature( enable = "sse4.1" ) ]
811
757
#[ cfg_attr( test, assert_instr( roundps, rounding = 0 ) ) ]
812
- #[ rustc_args_required_const ( 1 ) ]
758
+ #[ rustc_legacy_const_generics ( 1 ) ]
813
759
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
814
- pub unsafe fn _mm_round_ps ( a : __m128 , rounding : i32 ) -> __m128 {
815
- macro_rules! call {
816
- ( $imm4: expr) => {
817
- roundps( a, $imm4)
818
- } ;
819
- }
820
- constify_imm4 ! ( rounding, call)
760
+ pub unsafe fn _mm_round_ps < const rounding: i32 > ( a : __m128 ) -> __m128 {
761
+ static_assert_imm4 ! ( rounding) ;
762
+ roundps ( a, rounding)
821
763
}
822
764
823
765
/// Round the lower double-precision (64-bit) floating-point element in `b`
@@ -856,15 +798,11 @@ pub unsafe fn _mm_round_ps(a: __m128, rounding: i32) -> __m128 {
856
798
#[ inline]
857
799
#[ target_feature( enable = "sse4.1" ) ]
858
800
#[ cfg_attr( test, assert_instr( roundsd, rounding = 0 ) ) ]
859
- #[ rustc_args_required_const ( 2 ) ]
801
+ #[ rustc_legacy_const_generics ( 2 ) ]
860
802
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
861
- pub unsafe fn _mm_round_sd ( a : __m128d , b : __m128d , rounding : i32 ) -> __m128d {
862
- macro_rules! call {
863
- ( $imm4: expr) => {
864
- roundsd( a, b, $imm4)
865
- } ;
866
- }
867
- constify_imm4 ! ( rounding, call)
803
+ pub unsafe fn _mm_round_sd < const rounding: i32 > ( a : __m128d , b : __m128d ) -> __m128d {
804
+ static_assert_imm4 ! ( rounding) ;
805
+ roundsd ( a, b, rounding)
868
806
}
869
807
870
808
/// Round the lower single-precision (32-bit) floating-point element in `b`
@@ -903,15 +841,11 @@ pub unsafe fn _mm_round_sd(a: __m128d, b: __m128d, rounding: i32) -> __m128d {
903
841
#[ inline]
904
842
#[ target_feature( enable = "sse4.1" ) ]
905
843
#[ cfg_attr( test, assert_instr( roundss, rounding = 0 ) ) ]
906
- #[ rustc_args_required_const ( 2 ) ]
844
+ #[ rustc_legacy_const_generics ( 2 ) ]
907
845
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
908
- pub unsafe fn _mm_round_ss ( a : __m128 , b : __m128 , rounding : i32 ) -> __m128 {
909
- macro_rules! call {
910
- ( $imm4: expr) => {
911
- roundss( a, b, $imm4)
912
- } ;
913
- }
914
- constify_imm4 ! ( rounding, call)
846
+ pub unsafe fn _mm_round_ss < const rounding: i32 > ( a : __m128 , b : __m128 ) -> __m128 {
847
+ static_assert_imm4 ! ( rounding) ;
848
+ roundss ( a, b, rounding)
915
849
}
916
850
917
851
/// Finds the minimum unsigned 16-bit element in the 128-bit __m128i vector,
@@ -1007,17 +941,11 @@ pub unsafe fn _mm_mullo_epi32(a: __m128i, b: __m128i) -> __m128i {
1007
941
#[ inline]
1008
942
#[ target_feature( enable = "sse4.1" ) ]
1009
943
#[ cfg_attr( test, assert_instr( mpsadbw, imm8 = 0 ) ) ]
1010
- #[ rustc_args_required_const ( 2 ) ]
944
+ #[ rustc_legacy_const_generics ( 2 ) ]
1011
945
#[ stable( feature = "simd_x86" , since = "1.27.0" ) ]
1012
- pub unsafe fn _mm_mpsadbw_epu8 ( a : __m128i , b : __m128i , imm8 : i32 ) -> __m128i {
1013
- let a = a. as_u8x16 ( ) ;
1014
- let b = b. as_u8x16 ( ) ;
1015
- macro_rules! call {
1016
- ( $imm8: expr) => {
1017
- mpsadbw( a, b, $imm8)
1018
- } ;
1019
- }
1020
- transmute ( constify_imm3 ! ( imm8, call) )
946
+ pub unsafe fn _mm_mpsadbw_epu8 < const imm8: i32 > ( a : __m128i , b : __m128i ) -> __m128i {
947
+ static_assert_imm3 ! ( imm8) ;
948
+ transmute ( mpsadbw ( a. as_u8x16 ( ) , b. as_u8x16 ( ) , imm8 as u8 ) )
1021
949
}
1022
950
1023
951
/// Tests whether the specified bits in a 128-bit integer vector are all
@@ -1270,7 +1198,7 @@ mod tests {
1270
1198
unsafe fn test_mm_blend_pd ( ) {
1271
1199
let a = _mm_set1_pd ( 0.0 ) ;
1272
1200
let b = _mm_set1_pd ( 1.0 ) ;
1273
- let r = _mm_blend_pd ( a, b, 0b10 ) ;
1201
+ let r = _mm_blend_pd :: < 0b10 > ( a, b) ;
1274
1202
let e = _mm_setr_pd ( 0.0 , 1.0 ) ;
1275
1203
assert_eq_m128d ( r, e) ;
1276
1204
}
@@ -1279,7 +1207,7 @@ mod tests {
1279
1207
unsafe fn test_mm_blend_ps ( ) {
1280
1208
let a = _mm_set1_ps ( 0.0 ) ;
1281
1209
let b = _mm_set1_ps ( 1.0 ) ;
1282
- let r = _mm_blend_ps ( a, b, 0b1010 ) ;
1210
+ let r = _mm_blend_ps :: < 0b1010 > ( a, b) ;
1283
1211
let e = _mm_setr_ps ( 0.0 , 1.0 , 0.0 , 1.0 ) ;
1284
1212
assert_eq_m128 ( r, e) ;
1285
1213
}
@@ -1288,18 +1216,18 @@ mod tests {
1288
1216
unsafe fn test_mm_blend_epi16 ( ) {
1289
1217
let a = _mm_set1_epi16 ( 0 ) ;
1290
1218
let b = _mm_set1_epi16 ( 1 ) ;
1291
- let r = _mm_blend_epi16 ( a, b, 0b1010_1100 ) ;
1219
+ let r = _mm_blend_epi16 :: < 0b1010_1100 > ( a, b) ;
1292
1220
let e = _mm_setr_epi16 ( 0 , 0 , 1 , 1 , 0 , 1 , 0 , 1 ) ;
1293
1221
assert_eq_m128i ( r, e) ;
1294
1222
}
1295
1223
1296
1224
#[ simd_test( enable = "sse4.1" ) ]
1297
1225
unsafe fn test_mm_extract_ps ( ) {
1298
1226
let a = _mm_setr_ps ( 0.0 , 1.0 , 2.0 , 3.0 ) ;
1299
- let r: f32 = transmute ( _mm_extract_ps ( a, 1 ) ) ;
1300
- assert_eq ! ( r, 1.0 ) ;
1301
- let r: f32 = transmute ( _mm_extract_ps ( a, 5 ) ) ;
1227
+ let r: f32 = transmute ( _mm_extract_ps :: < 1 > ( a) ) ;
1302
1228
assert_eq ! ( r, 1.0 ) ;
1229
+ let r: f32 = transmute ( _mm_extract_ps :: < 3 > ( a) ) ;
1230
+ assert_eq ! ( r, 3.0 ) ;
1303
1231
}
1304
1232
1305
1233
#[ simd_test( enable = "sse4.1" ) ]
@@ -1309,26 +1237,26 @@ mod tests {
1309
1237
-1 , 1 , 2 , 3 , 4 , 5 , 6 , 7 ,
1310
1238
8 , 9 , 10 , 11 , 12 , 13 , 14 , 15
1311
1239
) ;
1312
- let r1 = _mm_extract_epi8 ( a , 0 ) ;
1313
- let r2 = _mm_extract_epi8 ( a , 19 ) ;
1240
+ let r1 = _mm_extract_epi8 :: < 0 > ( a ) ;
1241
+ let r2 = _mm_extract_epi8 :: < 3 > ( a ) ;
1314
1242
assert_eq ! ( r1, 0xFF ) ;
1315
1243
assert_eq ! ( r2, 3 ) ;
1316
1244
}
1317
1245
1318
1246
#[ simd_test( enable = "sse4.1" ) ]
1319
1247
unsafe fn test_mm_extract_epi32 ( ) {
1320
1248
let a = _mm_setr_epi32 ( 0 , 1 , 2 , 3 ) ;
1321
- let r = _mm_extract_epi32 ( a, 1 ) ;
1322
- assert_eq ! ( r, 1 ) ;
1323
- let r = _mm_extract_epi32 ( a, 5 ) ;
1249
+ let r = _mm_extract_epi32 :: < 1 > ( a) ;
1324
1250
assert_eq ! ( r, 1 ) ;
1251
+ let r = _mm_extract_epi32 :: < 3 > ( a) ;
1252
+ assert_eq ! ( r, 3 ) ;
1325
1253
}
1326
1254
1327
1255
#[ simd_test( enable = "sse4.1" ) ]
1328
1256
unsafe fn test_mm_insert_ps ( ) {
1329
1257
let a = _mm_set1_ps ( 1.0 ) ;
1330
1258
let b = _mm_setr_ps ( 1.0 , 2.0 , 3.0 , 4.0 ) ;
1331
- let r = _mm_insert_ps ( a, b, 0b11_00_1100 ) ;
1259
+ let r = _mm_insert_ps :: < 0b11_00_1100 > ( a, b) ;
1332
1260
let e = _mm_setr_ps ( 4.0 , 1.0 , 0.0 , 0.0 ) ;
1333
1261
assert_eq_m128 ( r, e) ;
1334
1262
}
@@ -1337,19 +1265,21 @@ mod tests {
1337
1265
unsafe fn test_mm_insert_epi8 ( ) {
1338
1266
let a = _mm_set1_epi8 ( 0 ) ;
1339
1267
let e = _mm_setr_epi8 ( 0 , 32 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) ;
1340
- let r = _mm_insert_epi8 ( a, 32 , 1 ) ;
1268
+ let r = _mm_insert_epi8 :: < 1 > ( a, 32 ) ;
1341
1269
assert_eq_m128i ( r, e) ;
1342
- let r = _mm_insert_epi8 ( a, 32 , 17 ) ;
1270
+ let e = _mm_setr_epi8 ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 32 , 0 ) ;
1271
+ let r = _mm_insert_epi8 :: < 14 > ( a, 32 ) ;
1343
1272
assert_eq_m128i ( r, e) ;
1344
1273
}
1345
1274
1346
1275
#[ simd_test( enable = "sse4.1" ) ]
1347
1276
unsafe fn test_mm_insert_epi32 ( ) {
1348
1277
let a = _mm_set1_epi32 ( 0 ) ;
1349
1278
let e = _mm_setr_epi32 ( 0 , 32 , 0 , 0 ) ;
1350
- let r = _mm_insert_epi32 ( a, 32 , 1 ) ;
1279
+ let r = _mm_insert_epi32 :: < 1 > ( a, 32 ) ;
1351
1280
assert_eq_m128i ( r, e) ;
1352
- let r = _mm_insert_epi32 ( a, 32 , 5 ) ;
1281
+ let e = _mm_setr_epi32 ( 0 , 0 , 0 , 32 ) ;
1282
+ let r = _mm_insert_epi32 :: < 3 > ( a, 32 ) ;
1353
1283
assert_eq_m128i ( r, e) ;
1354
1284
}
1355
1285
@@ -1622,15 +1552,15 @@ mod tests {
1622
1552
let a = _mm_setr_pd ( 2.0 , 3.0 ) ;
1623
1553
let b = _mm_setr_pd ( 1.0 , 4.0 ) ;
1624
1554
let e = _mm_setr_pd ( 14.0 , 0.0 ) ;
1625
- assert_eq_m128d ( _mm_dp_pd ( a, b, 0b00110001 ) , e) ;
1555
+ assert_eq_m128d ( _mm_dp_pd :: < 0b00110001 > ( a, b) , e) ;
1626
1556
}
1627
1557
1628
1558
#[ simd_test( enable = "sse4.1" ) ]
1629
1559
unsafe fn test_mm_dp_ps ( ) {
1630
1560
let a = _mm_setr_ps ( 2.0 , 3.0 , 1.0 , 10.0 ) ;
1631
1561
let b = _mm_setr_ps ( 1.0 , 4.0 , 0.5 , 10.0 ) ;
1632
1562
let e = _mm_setr_ps ( 14.5 , 0.0 , 14.5 , 0.0 ) ;
1633
- assert_eq_m128 ( _mm_dp_ps ( a, b, 0b01110101 ) , e) ;
1563
+ assert_eq_m128 ( _mm_dp_ps :: < 0b01110101 > ( a, b) , e) ;
1634
1564
}
1635
1565
1636
1566
#[ simd_test( enable = "sse4.1" ) ]
@@ -1704,15 +1634,15 @@ mod tests {
1704
1634
#[ simd_test( enable = "sse4.1" ) ]
1705
1635
unsafe fn test_mm_round_pd ( ) {
1706
1636
let a = _mm_setr_pd ( 1.25 , 3.75 ) ;
1707
- let r = _mm_round_pd ( a , _MM_FROUND_TO_NEAREST_INT ) ;
1637
+ let r = _mm_round_pd :: < _MM_FROUND_TO_NEAREST_INT > ( a ) ;
1708
1638
let e = _mm_setr_pd ( 1.0 , 4.0 ) ;
1709
1639
assert_eq_m128d ( r, e) ;
1710
1640
}
1711
1641
1712
1642
#[ simd_test( enable = "sse4.1" ) ]
1713
1643
unsafe fn test_mm_round_ps ( ) {
1714
1644
let a = _mm_setr_ps ( 2.25 , 4.75 , -1.75 , -4.25 ) ;
1715
- let r = _mm_round_ps ( a , _MM_FROUND_TO_ZERO ) ;
1645
+ let r = _mm_round_ps :: < _MM_FROUND_TO_ZERO > ( a ) ;
1716
1646
let e = _mm_setr_ps ( 2.0 , 4.0 , -1.0 , -4.0 ) ;
1717
1647
assert_eq_m128 ( r, e) ;
1718
1648
}
@@ -1723,7 +1653,7 @@ mod tests {
1723
1653
let b = _mm_setr_pd ( -2.5 , -4.5 ) ;
1724
1654
let old_mode = _MM_GET_ROUNDING_MODE ( ) ;
1725
1655
_MM_SET_ROUNDING_MODE ( _MM_ROUND_TOWARD_ZERO) ;
1726
- let r = _mm_round_sd ( a, b, _MM_FROUND_CUR_DIRECTION ) ;
1656
+ let r = _mm_round_sd :: < _MM_FROUND_CUR_DIRECTION > ( a, b) ;
1727
1657
_MM_SET_ROUNDING_MODE ( old_mode) ;
1728
1658
let e = _mm_setr_pd ( -2.0 , 3.5 ) ;
1729
1659
assert_eq_m128d ( r, e) ;
@@ -1735,7 +1665,7 @@ mod tests {
1735
1665
let b = _mm_setr_ps ( -1.75 , -4.5 , -8.5 , -16.5 ) ;
1736
1666
let old_mode = _MM_GET_ROUNDING_MODE ( ) ;
1737
1667
_MM_SET_ROUNDING_MODE ( _MM_ROUND_NEAREST) ;
1738
- let r = _mm_round_ss ( a, b, _MM_FROUND_CUR_DIRECTION ) ;
1668
+ let r = _mm_round_ss :: < _MM_FROUND_CUR_DIRECTION > ( a, b) ;
1739
1669
_MM_SET_ROUNDING_MODE ( old_mode) ;
1740
1670
let e = _mm_setr_ps ( -2.0 , 3.5 , 7.5 , 15.5 ) ;
1741
1671
assert_eq_m128 ( r, e) ;
@@ -1815,23 +1745,23 @@ mod tests {
1815
1745
8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ,
1816
1746
) ;
1817
1747
1818
- let r = _mm_mpsadbw_epu8 ( a, a, 0b000 ) ;
1748
+ let r = _mm_mpsadbw_epu8 :: < 0b000 > ( a, a) ;
1819
1749
let e = _mm_setr_epi16 ( 0 , 4 , 8 , 12 , 16 , 20 , 24 , 28 ) ;
1820
1750
assert_eq_m128i ( r, e) ;
1821
1751
1822
- let r = _mm_mpsadbw_epu8 ( a, a, 0b001 ) ;
1752
+ let r = _mm_mpsadbw_epu8 :: < 0b001 > ( a, a) ;
1823
1753
let e = _mm_setr_epi16 ( 16 , 12 , 8 , 4 , 0 , 4 , 8 , 12 ) ;
1824
1754
assert_eq_m128i ( r, e) ;
1825
1755
1826
- let r = _mm_mpsadbw_epu8 ( a, a, 0b100 ) ;
1756
+ let r = _mm_mpsadbw_epu8 :: < 0b100 > ( a, a) ;
1827
1757
let e = _mm_setr_epi16 ( 16 , 20 , 24 , 28 , 32 , 36 , 40 , 44 ) ;
1828
1758
assert_eq_m128i ( r, e) ;
1829
1759
1830
- let r = _mm_mpsadbw_epu8 ( a, a, 0b101 ) ;
1760
+ let r = _mm_mpsadbw_epu8 :: < 0b101 > ( a, a) ;
1831
1761
let e = _mm_setr_epi16 ( 0 , 4 , 8 , 12 , 16 , 20 , 24 , 28 ) ;
1832
1762
assert_eq_m128i ( r, e) ;
1833
1763
1834
- let r = _mm_mpsadbw_epu8 ( a, a, 0b111 ) ;
1764
+ let r = _mm_mpsadbw_epu8 :: < 0b111 > ( a, a) ;
1835
1765
let e = _mm_setr_epi16 ( 32 , 28 , 24 , 20 , 16 , 12 , 8 , 4 ) ;
1836
1766
assert_eq_m128i ( r, e) ;
1837
1767
}
0 commit comments