@@ -416,8 +416,10 @@ pub fn detect_features() -> usize {
416
416
417
417
#[ cfg( test) ]
418
418
mod tests {
419
+ extern crate cupid;
420
+
419
421
#[ test]
420
- fn runtime_detection_x86_nocapture ( ) {
422
+ fn dump ( ) {
421
423
println ! ( "sse: {:?}" , cfg_feature_enabled!( "sse" ) ) ;
422
424
println ! ( "sse2: {:?}" , cfg_feature_enabled!( "sse2" ) ) ;
423
425
println ! ( "sse3: {:?}" , cfg_feature_enabled!( "sse3" ) ) ;
@@ -433,10 +435,10 @@ mod tests {
433
435
println ! ( "avx512bw {:?}" , cfg_feature_enabled!( "avx512bw" ) ) ;
434
436
println ! ( "avx512dq {:?}" , cfg_feature_enabled!( "avx512dq" ) ) ;
435
437
println ! ( "avx512vl {:?}" , cfg_feature_enabled!( "avx512vl" ) ) ;
436
- println ! ( "avx512ifma {:?}" , cfg_feature_enabled!( "avx512ifma" ) ) ;
437
- println ! ( "avx512vbmi {:?}" , cfg_feature_enabled!( "avx512vbmi" ) ) ;
438
+ println ! ( "avx512_ifma {:?}" , cfg_feature_enabled!( "avx512ifma" ) ) ;
439
+ println ! ( "avx512_vbmi {:?}" , cfg_feature_enabled!( "avx512vbmi" ) ) ;
438
440
println ! (
439
- "avx512vpopcntdq {:?}" ,
441
+ "avx512_vpopcntdq {:?}" ,
440
442
cfg_feature_enabled!( "avx512vpopcntdq" )
441
443
) ;
442
444
println ! ( "fma: {:?}" , cfg_feature_enabled!( "fma" ) ) ;
@@ -451,4 +453,48 @@ mod tests {
451
453
println ! ( "xsaves {:?}" , cfg_feature_enabled!( "xsaves" ) ) ;
452
454
println ! ( "xsavec {:?}" , cfg_feature_enabled!( "xsavec" ) ) ;
453
455
}
456
+
457
+ #[ test]
458
+ fn compare_with_cupid ( ) {
459
+ let information = cupid:: master ( ) . unwrap ( ) ;
460
+ assert_eq ! ( cfg_feature_enabled!( "sse" ) , information. sse( ) ) ;
461
+ assert_eq ! ( cfg_feature_enabled!( "sse2" ) , information. sse2( ) ) ;
462
+ assert_eq ! ( cfg_feature_enabled!( "sse3" ) , information. sse3( ) ) ;
463
+ assert_eq ! ( cfg_feature_enabled!( "ssse3" ) , information. ssse3( ) ) ;
464
+ assert_eq ! ( cfg_feature_enabled!( "sse4.1" ) , information. sse4_1( ) ) ;
465
+ assert_eq ! ( cfg_feature_enabled!( "sse4.2" ) , information. sse4_2( ) ) ;
466
+ assert_eq ! ( cfg_feature_enabled!( "avx" ) , information. avx( ) ) ;
467
+ assert_eq ! ( cfg_feature_enabled!( "avx2" ) , information. avx2( ) ) ;
468
+ assert_eq ! ( cfg_feature_enabled!( "avx512f" ) , information. avx512f( ) ) ;
469
+ assert_eq ! ( cfg_feature_enabled!( "avx512cd" ) , information. avx512cd( ) ) ;
470
+ assert_eq ! ( cfg_feature_enabled!( "avx512er" ) , information. avx512er( ) ) ;
471
+ assert_eq ! ( cfg_feature_enabled!( "avx512pf" ) , information. avx512pf( ) ) ;
472
+ assert_eq ! ( cfg_feature_enabled!( "avx512bw" ) , information. avx512bw( ) ) ;
473
+ assert_eq ! ( cfg_feature_enabled!( "avx512dq" ) , information. avx512dq( ) ) ;
474
+ assert_eq ! ( cfg_feature_enabled!( "avx512vl" ) , information. avx512vl( ) ) ;
475
+ assert_eq ! ( cfg_feature_enabled!( "avx512ifma" ) , information. avx512_ifma( ) ) ;
476
+ assert_eq ! ( cfg_feature_enabled!( "avx512vbmi" ) , information. avx512_vbmi( ) ) ;
477
+ assert_eq ! (
478
+ cfg_feature_enabled!( "avx512vpopcntdq" ) ,
479
+ information. avx512_vpopcntdq( )
480
+ ) ;
481
+ assert_eq ! ( cfg_feature_enabled!( "fma" ) , information. fma( ) ) ;
482
+ assert_eq ! ( cfg_feature_enabled!( "bmi" ) , information. bmi1( ) ) ;
483
+ assert_eq ! ( cfg_feature_enabled!( "bmi2" ) , information. bmi2( ) ) ;
484
+ assert_eq ! ( cfg_feature_enabled!( "popcnt" ) , information. popcnt( ) ) ;
485
+ assert_eq ! ( cfg_feature_enabled!( "sse4a" ) , information. sse4a( ) ) ;
486
+ assert_eq ! ( cfg_feature_enabled!( "abm" ) , information. lzcnt( ) ) ;
487
+ assert_eq ! ( cfg_feature_enabled!( "tbm" ) , information. tbm( ) ) ;
488
+ assert_eq ! ( cfg_feature_enabled!( "lzcnt" ) , information. lzcnt( ) ) ;
489
+ assert_eq ! ( cfg_feature_enabled!( "xsave" ) , information. xsave( ) ) ;
490
+ assert_eq ! ( cfg_feature_enabled!( "xsaveopt" ) , information. xsaveopt( ) ) ;
491
+ assert_eq ! (
492
+ cfg_feature_enabled!( "xsavec" ) ,
493
+ information. xsavec_and_xrstor( )
494
+ ) ;
495
+ assert_eq ! (
496
+ cfg_feature_enabled!( "xsaves" ) ,
497
+ information. xsaves_xrstors_and_ia32_xss( )
498
+ ) ;
499
+ }
454
500
}
0 commit comments