@@ -230,51 +230,53 @@ unsafe fn test_crc32() {
230230#[ cfg( target_arch = "x86_64" ) ]
231231#[ target_feature( enable = "sse2" ) ]
232232unsafe fn test_simd ( ) {
233- assert ! ( is_x86_feature_detected!( "sse2" ) ) ;
234-
235- let x = _mm_setzero_si128 ( ) ;
236- let y = _mm_set1_epi16 ( 7 ) ;
237- let or = _mm_or_si128 ( x, y) ;
238- let cmp_eq = _mm_cmpeq_epi8 ( y, y) ;
239- let cmp_lt = _mm_cmplt_epi8 ( y, y) ;
240-
241- let ( zero0, zero1) = std:: mem:: transmute :: < _ , ( u64 , u64 ) > ( x) ;
242- assert_eq ! ( ( zero0, zero1) , ( 0 , 0 ) ) ;
243- assert_eq ! ( std:: mem:: transmute:: <_, [ u16 ; 8 ] >( or) , [ 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 ] ) ;
244- assert_eq ! (
245- std:: mem:: transmute:: <_, [ u16 ; 8 ] >( cmp_eq) ,
246- [ 0xffff , 0xffff , 0xffff , 0xffff , 0xffff , 0xffff , 0xffff , 0xffff ]
247- ) ;
248- assert_eq ! ( std:: mem:: transmute:: <_, [ u16 ; 8 ] >( cmp_lt) , [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ) ;
249-
250- test_mm_slli_si128 ( ) ;
251- test_mm_movemask_epi8 ( ) ;
252- test_mm256_movemask_epi8 ( ) ;
253- test_mm_add_epi8 ( ) ;
254- test_mm_add_pd ( ) ;
255- test_mm_cvtepi8_epi16 ( ) ;
256- #[ cfg( not( jit) ) ]
257- test_mm_cvtps_epi32 ( ) ;
258- test_mm_cvttps_epi32 ( ) ;
259- test_mm_cvtsi128_si64 ( ) ;
260-
261- test_mm_extract_epi8 ( ) ;
262- test_mm_insert_epi16 ( ) ;
263- test_mm_shuffle_epi8 ( ) ;
264-
265- #[ cfg( not( jit) ) ]
266- test_mm_cmpestri ( ) ;
267-
268- test_mm256_shuffle_epi8 ( ) ;
269- test_mm256_permute2x128_si256 ( ) ;
270- test_mm256_permutevar8x32_epi32 ( ) ;
271-
272- #[ rustfmt:: skip]
233+ unsafe {
234+ assert ! ( is_x86_feature_detected!( "sse2" ) ) ;
235+
236+ let x = _mm_setzero_si128 ( ) ;
237+ let y = _mm_set1_epi16 ( 7 ) ;
238+ let or = _mm_or_si128 ( x, y) ;
239+ let cmp_eq = _mm_cmpeq_epi8 ( y, y) ;
240+ let cmp_lt = _mm_cmplt_epi8 ( y, y) ;
241+
242+ let ( zero0, zero1) = std:: mem:: transmute :: < _ , ( u64 , u64 ) > ( x) ;
243+ assert_eq ! ( ( zero0, zero1) , ( 0 , 0 ) ) ;
244+ assert_eq ! ( std:: mem:: transmute:: <_, [ u16 ; 8 ] >( or) , [ 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 ] ) ;
245+ assert_eq ! (
246+ std:: mem:: transmute:: <_, [ u16 ; 8 ] >( cmp_eq) ,
247+ [ 0xffff , 0xffff , 0xffff , 0xffff , 0xffff , 0xffff , 0xffff , 0xffff ]
248+ ) ;
249+ assert_eq ! ( std:: mem:: transmute:: <_, [ u16 ; 8 ] >( cmp_lt) , [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ) ;
250+
251+ test_mm_slli_si128 ( ) ;
252+ test_mm_movemask_epi8 ( ) ;
253+ test_mm256_movemask_epi8 ( ) ;
254+ test_mm_add_epi8 ( ) ;
255+ test_mm_add_pd ( ) ;
256+ test_mm_cvtepi8_epi16 ( ) ;
257+ #[ cfg( not( jit) ) ]
258+ test_mm_cvtps_epi32 ( ) ;
259+ test_mm_cvttps_epi32 ( ) ;
260+ test_mm_cvtsi128_si64 ( ) ;
261+
262+ test_mm_extract_epi8 ( ) ;
263+ test_mm_insert_epi16 ( ) ;
264+ test_mm_shuffle_epi8 ( ) ;
265+
266+ #[ cfg( not( jit) ) ]
267+ test_mm_cmpestri ( ) ;
268+
269+ test_mm256_shuffle_epi8 ( ) ;
270+ test_mm256_permute2x128_si256 ( ) ;
271+ test_mm256_permutevar8x32_epi32 ( ) ;
272+
273+ #[ rustfmt:: skip]
273274 let mask1 = _mm_movemask_epi8 ( dbg ! ( _mm_setr_epi8( 255u8 as i8 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) ) ) ;
274- assert_eq ! ( mask1, 1 ) ;
275+ assert_eq ! ( mask1, 1 ) ;
275276
276- #[ cfg( not( jit) ) ]
277- test_crc32 ( ) ;
277+ #[ cfg( not( jit) ) ]
278+ test_crc32 ( ) ;
279+ }
278280}
279281
280282#[ cfg( target_arch = "x86_64" ) ]
@@ -361,23 +363,27 @@ fn assert_eq_m128i(x: std::arch::x86_64::__m128i, y: std::arch::x86_64::__m128i)
361363
362364#[ cfg( target_arch = "x86_64" ) ]
363365#[ target_feature( enable = "sse2" ) ]
364- pub unsafe fn assert_eq_m128d ( a : __m128d , b : __m128d ) {
366+ pub fn assert_eq_m128d ( a : __m128d , b : __m128d ) {
365367 if _mm_movemask_pd ( _mm_cmpeq_pd ( a, b) ) != 0b11 {
366368 panic ! ( "{:?} != {:?}" , a, b) ;
367369 }
368370}
369371
370372#[ cfg( target_arch = "x86_64" ) ]
371373#[ target_feature( enable = "avx" ) ]
372- pub unsafe fn assert_eq_m256i ( a : __m256i , b : __m256i ) {
373- assert_eq ! ( std:: mem:: transmute:: <_, [ u64 ; 4 ] >( a) , std:: mem:: transmute:: <_, [ u64 ; 4 ] >( b) )
374+ pub fn assert_eq_m256i ( a : __m256i , b : __m256i ) {
375+ unsafe {
376+ assert_eq ! ( std:: mem:: transmute:: <_, [ u64 ; 4 ] >( a) , std:: mem:: transmute:: <_, [ u64 ; 4 ] >( b) )
377+ }
374378}
375379
376380#[ cfg( target_arch = "x86_64" ) ]
377381#[ target_feature( enable = "sse2" ) ]
378382unsafe fn test_mm_cvtsi128_si64 ( ) {
379- let r = _mm_cvtsi128_si64 ( std:: mem:: transmute :: < [ i64 ; 2 ] , _ > ( [ 5 , 0 ] ) ) ;
380- assert_eq ! ( r, 5 ) ;
383+ unsafe {
384+ let r = _mm_cvtsi128_si64 ( std:: mem:: transmute :: < [ i64 ; 2 ] , _ > ( [ 5 , 0 ] ) ) ;
385+ assert_eq ! ( r, 5 ) ;
386+ }
381387}
382388
383389#[ cfg( target_arch = "x86_64" ) ]
@@ -445,20 +451,24 @@ unsafe fn test_mm_shuffle_epi8() {
445451#[ cfg( target_arch = "x86_64" ) ]
446452#[ target_feature( enable = "sse4.2" ) ]
447453unsafe fn str_to_m128i ( s : & [ u8 ] ) -> __m128i {
448- assert ! ( s. len( ) <= 16 ) ;
449- let slice = & mut [ 0u8 ; 16 ] ;
450- std:: ptr:: copy_nonoverlapping ( s. as_ptr ( ) , slice. as_mut_ptr ( ) , s. len ( ) ) ;
451- _mm_loadu_si128 ( slice. as_ptr ( ) as * const _ )
454+ unsafe {
455+ assert ! ( s. len( ) <= 16 ) ;
456+ let slice = & mut [ 0u8 ; 16 ] ;
457+ std:: ptr:: copy_nonoverlapping ( s. as_ptr ( ) , slice. as_mut_ptr ( ) , s. len ( ) ) ;
458+ _mm_loadu_si128 ( slice. as_ptr ( ) as * const _ )
459+ }
452460}
453461
454462#[ cfg( not( jit) ) ]
455463#[ cfg( target_arch = "x86_64" ) ]
456464#[ target_feature( enable = "sse4.2" ) ]
457465unsafe fn test_mm_cmpestri ( ) {
458- let a = str_to_m128i ( b"bar - garbage" ) ;
459- let b = str_to_m128i ( b"foobar" ) ;
460- let i = _mm_cmpestri :: < _SIDD_CMP_EQUAL_ORDERED > ( a, 3 , b, 6 ) ;
461- assert_eq ! ( 3 , i) ;
466+ unsafe {
467+ let a = str_to_m128i ( b"bar - garbage" ) ;
468+ let b = str_to_m128i ( b"foobar" ) ;
469+ let i = _mm_cmpestri :: < _SIDD_CMP_EQUAL_ORDERED > ( a, 3 , b, 6 ) ;
470+ assert_eq ! ( 3 , i) ;
471+ }
462472}
463473
464474#[ cfg( target_arch = "x86_64" ) ]
@@ -513,35 +523,39 @@ unsafe fn test_mm256_permutevar8x32_epi32() {
513523#[ target_feature( enable = "avx2" ) ]
514524#[ cfg( not( jit) ) ]
515525unsafe fn test_mm_cvtps_epi32 ( ) {
516- let floats: [ f32 ; 4 ] = [ 1.5 , -2.5 , i32:: MAX as f32 + 1.0 , f32:: NAN ] ;
526+ unsafe {
527+ let floats: [ f32 ; 4 ] = [ 1.5 , -2.5 , i32:: MAX as f32 + 1.0 , f32:: NAN ] ;
517528
518- let float_vec = _mm_loadu_ps ( floats. as_ptr ( ) ) ;
519- let int_vec = _mm_cvtps_epi32 ( float_vec) ;
529+ let float_vec = _mm_loadu_ps ( floats. as_ptr ( ) ) ;
530+ let int_vec = _mm_cvtps_epi32 ( float_vec) ;
520531
521- let mut ints: [ i32 ; 4 ] = [ 0 ; 4 ] ;
522- _mm_storeu_si128 ( ints. as_mut_ptr ( ) as * mut __m128i , int_vec) ;
532+ let mut ints: [ i32 ; 4 ] = [ 0 ; 4 ] ;
533+ _mm_storeu_si128 ( ints. as_mut_ptr ( ) as * mut __m128i , int_vec) ;
523534
524- // this is very different from `floats.map(|f| f as i32)`!
525- let expected_ints: [ i32 ; 4 ] = [ 2 , -2 , i32:: MIN , i32:: MIN ] ;
535+ // this is very different from `floats.map(|f| f as i32)`!
536+ let expected_ints: [ i32 ; 4 ] = [ 2 , -2 , i32:: MIN , i32:: MIN ] ;
526537
527- assert_eq ! ( ints, expected_ints) ;
538+ assert_eq ! ( ints, expected_ints) ;
539+ }
528540}
529541
530542#[ cfg( target_arch = "x86_64" ) ]
531543#[ target_feature( enable = "avx2" ) ]
532544unsafe fn test_mm_cvttps_epi32 ( ) {
533- let floats: [ f32 ; 4 ] = [ 1.5 , -2.5 , i32:: MAX as f32 + 1.0 , f32:: NAN ] ;
545+ unsafe {
546+ let floats: [ f32 ; 4 ] = [ 1.5 , -2.5 , i32:: MAX as f32 + 1.0 , f32:: NAN ] ;
534547
535- let float_vec = _mm_loadu_ps ( floats. as_ptr ( ) ) ;
536- let int_vec = _mm_cvttps_epi32 ( float_vec) ;
548+ let float_vec = _mm_loadu_ps ( floats. as_ptr ( ) ) ;
549+ let int_vec = _mm_cvttps_epi32 ( float_vec) ;
537550
538- let mut ints: [ i32 ; 4 ] = [ 0 ; 4 ] ;
539- _mm_storeu_si128 ( ints. as_mut_ptr ( ) as * mut __m128i , int_vec) ;
551+ let mut ints: [ i32 ; 4 ] = [ 0 ; 4 ] ;
552+ _mm_storeu_si128 ( ints. as_mut_ptr ( ) as * mut __m128i , int_vec) ;
540553
541- // this is very different from `floats.map(|f| f as i32)`!
542- let expected_ints: [ i32 ; 4 ] = [ 1 , -2 , i32:: MIN , i32:: MIN ] ;
554+ // this is very different from `floats.map(|f| f as i32)`!
555+ let expected_ints: [ i32 ; 4 ] = [ 1 , -2 , i32:: MIN , i32:: MIN ] ;
543556
544- assert_eq ! ( ints, expected_ints) ;
557+ assert_eq ! ( ints, expected_ints) ;
558+ }
545559}
546560
547561fn test_checked_mul ( ) {
0 commit comments