@@ -423,8 +423,10 @@ pub fn detect_features() -> usize {
423
423
424
424
#[ cfg( test) ]
425
425
mod tests {
426
+ extern crate cupid;
427
+
426
428
#[ test]
427
- fn runtime_detection_x86_nocapture ( ) {
429
+ fn dump ( ) {
428
430
println ! ( "sse: {:?}" , cfg_feature_enabled!( "sse" ) ) ;
429
431
println ! ( "sse2: {:?}" , cfg_feature_enabled!( "sse2" ) ) ;
430
432
println ! ( "sse3: {:?}" , cfg_feature_enabled!( "sse3" ) ) ;
@@ -440,10 +442,10 @@ mod tests {
440
442
println ! ( "avx512bw {:?}" , cfg_feature_enabled!( "avx512bw" ) ) ;
441
443
println ! ( "avx512dq {:?}" , cfg_feature_enabled!( "avx512dq" ) ) ;
442
444
println ! ( "avx512vl {:?}" , cfg_feature_enabled!( "avx512vl" ) ) ;
443
- println ! ( "avx512ifma {:?}" , cfg_feature_enabled!( "avx512ifma" ) ) ;
444
- println ! ( "avx512vbmi {:?}" , cfg_feature_enabled!( "avx512vbmi" ) ) ;
445
+ println ! ( "avx512_ifma {:?}" , cfg_feature_enabled!( "avx512ifma" ) ) ;
446
+ println ! ( "avx512_vbmi {:?}" , cfg_feature_enabled!( "avx512vbmi" ) ) ;
445
447
println ! (
446
- "avx512vpopcntdq {:?}" ,
448
+ "avx512_vpopcntdq {:?}" ,
447
449
cfg_feature_enabled!( "avx512vpopcntdq" )
448
450
) ;
449
451
println ! ( "fma: {:?}" , cfg_feature_enabled!( "fma" ) ) ;
@@ -458,4 +460,55 @@ mod tests {
458
460
println ! ( "xsaves {:?}" , cfg_feature_enabled!( "xsaves" ) ) ;
459
461
println ! ( "xsavec {:?}" , cfg_feature_enabled!( "xsavec" ) ) ;
460
462
}
463
+
464
+ #[ test]
465
+ fn compare_with_cupid ( ) {
466
+ let information = cupid:: master ( ) . unwrap ( ) ;
467
+ assert_eq ! ( cfg_feature_enabled!( "sse" ) , information. sse( ) ) ;
468
+ assert_eq ! ( cfg_feature_enabled!( "sse2" ) , information. sse2( ) ) ;
469
+ assert_eq ! ( cfg_feature_enabled!( "sse3" ) , information. sse3( ) ) ;
470
+ assert_eq ! ( cfg_feature_enabled!( "ssse3" ) , information. ssse3( ) ) ;
471
+ assert_eq ! ( cfg_feature_enabled!( "sse4.1" ) , information. sse4_1( ) ) ;
472
+ assert_eq ! ( cfg_feature_enabled!( "sse4.2" ) , information. sse4_2( ) ) ;
473
+ assert_eq ! ( cfg_feature_enabled!( "avx" ) , information. avx( ) ) ;
474
+ assert_eq ! ( cfg_feature_enabled!( "avx2" ) , information. avx2( ) ) ;
475
+ // assert_eq!(cfg_feature_enabled!("avx512f"), information.avx512f());
476
+ // assert_eq!(cfg_feature_enabled!("avx512cd"),
477
+ // information.avx512cd());
478
+ // assert_eq!(cfg_feature_enabled!("avx512er"),
479
+ // information.avx512er());
480
+ // assert_eq!(cfg_feature_enabled!("avx512pf"),
481
+ // information.avx512pf());
482
+ // assert_eq!(cfg_feature_enabled!("avx512bw"),
483
+ // information.avx512bw());
484
+ // assert_eq!(cfg_feature_enabled!("avx512dq"),
485
+ // information.avx512dq());
486
+ // assert_eq!(cfg_feature_enabled!("avx512vl"),
487
+ // information.avx512vl());
488
+ // assert_eq!(cfg_feature_enabled!("avx512ifma"),
489
+ // information.avx512_ifma());
490
+ // assert_eq!(cfg_feature_enabled!("avx512vbmi"),
491
+ // information.avx512_vbmi());
492
+ // assert_eq!(cfg_feature_enabled!("avx512vpopcntdq"),
493
+ // information.avx512_vpopcntdq());
494
+ assert_eq ! ( cfg_feature_enabled!( "fma" ) , information. fma( ) ) ;
495
+ assert_eq ! ( cfg_feature_enabled!( "bmi" ) , information. bmi1( ) ) ;
496
+ assert_eq ! ( cfg_feature_enabled!( "bmi2" ) , information. bmi2( ) ) ;
497
+ assert_eq ! ( cfg_feature_enabled!( "popcnt" ) , information. popcnt( ) ) ;
498
+ // assert_eq!(cfg_feature_enabled!("sse4a"), information.sse4a());
499
+ assert_eq ! ( cfg_feature_enabled!( "abm" ) , information. lzcnt( ) ) ;
500
+ assert_eq ! ( cfg_feature_enabled!( "tbm" ) , information. tbm( ) ) ;
501
+ assert_eq ! ( cfg_feature_enabled!( "lzcnt" ) , information. lzcnt( ) ) ;
502
+ assert_eq ! ( cfg_feature_enabled!( "xsave" ) , information. xsave( ) ) ;
503
+ assert_eq ! ( cfg_feature_enabled!( "xsaveopt" ) , information. xsaveopt( ) ) ;
504
+ assert_eq ! (
505
+ cfg_feature_enabled!( "xsavec" ) ,
506
+ information. xsavec_and_xrstor( )
507
+ ) ;
508
+ assert_eq ! (
509
+ cfg_feature_enabled!( "xsavec" ) ,
510
+ information. xsaves_xrstors_and_ia32_xss( )
511
+ ) ;
512
+ }
513
+
461
514
}
0 commit comments